2010-02-12 7 views
1

ErrorView 모델 및 오류보기를 사용하여 컨트롤러 액션에 의해 발생한 예외를 처리하려고합니다. 아이디어는 같은 것을 가지고 있었다 :C# 예외를 MVC에서 처리하기 위해 속성 사용

[InformClientOfExceptions(typeof(MyErrorHandler))] 
public ActionResult MyAction(Int32 someId) 
{ 
    //...code 
} 

그럼 어쩌면 새로운 인터페이스 IErrorView 구현하는 일부 클래스 MyErrorHandler이 : 예외가 작용에 의해 발생하는 경우

public class MyErrorHander : IErrorView 
{ 
    public ActionResult OnException(Exception ex) 
    { 
     //..code which converts exception to some error view model and returns the view 

를, 속성 클래스를 요리 지정된 예외를 예외로 전달하면 예외가 처리됩니다 (기본 형식의 경우 형식 및 출력). 이제 예, 예외가 발생해서는 안되며, 적어도 적절히 처리해야합니다. 그러나 이것을 작성하는 더 좋은 방법이 필요합니다. 특정 유형의 예외에 대해보다 복잡한 응답을 허용하도록이 패턴을 확장하고자하므로 사용자 정의 오류 페이지를 사용하고 싶지 않습니다. 이 아이디어에 가장 근접한 아이디어?

+0

중복? http://stackoverflow.com/questions/183316/asp-net-mvc-handleerror – ziya

+0

나는 그가 AOP를 사용하여 오류를 처리하는 방법을 묻는 것과 그와 함께 어떤 옵션을 사용할 수 있는지에 대해 그 질문에 대해 중복되는 것에 동의하지 않는다. ASP.NET MVC와 결합 된 AOP 장점. –

답변

1

[HandleError]은 기본적으로 Error보기를 찾습니다. 보기를 지정하고 예외를 매개 변수로 제한 할 수 있습니다.

[HandleError(ExceptionType = typeof(ArgumentException), View = "ErrorViewForThatException"] 

조치 또는 제어기 클래스에 해당 속성을 넣을 수 있습니다. 그것은 당신이 원하는 것을 정확하게하지는 못하지만, 그것은 매우 가깝게옵니다.

0

[HandleError]을 사용해 보셨습니까?

0

FilterAttribute에서 상속 받고 IExceptionFilter 특성을 구현하는 클래스를 만듭니다 (이와 비슷한 기능). 이 조합은 예외를 기록하는 데 사용되며 지정한대로 로깅 예외에 사용할 객체의 유형을 가져올 수 있습니다.

0

[HandleError] 방법론과 같이 기본적으로 MVC에 포함 된 구문을 사용하는 경우 외에 실제로 논의하는 내용은 AOP (Aspect Orientated Programming)입니다. 이와 유사한 AOP 솔루션을 얻으려면 PostSharp 또는 LinFu.AOP와 같은 원하는 결과를 얻기 위해 코드를 병합하는 포스트 빌드 위빙 프레임 워크를 사용해야합니다. 빌드 위빙 프레임 워크없이이를 달성하려면 인터페이스를 통해 처리하고 Castle.DynamicProxy 또는 LinFu.DynamicProxy와 같은 동적 프록시를 사용해야합니다.

관련 문제