0
我试图抛出一些异常,将其捕获到HandleException
属性中,并将其正确返回给客户端。基于异常类型处理异常/ HTTP状态代码
下面是一个例子:
[HandleException(Type = typeof(UserNotFoundException), Status = HttpStatusCode.NotFound)]
[HandleException(Type = typeof(LoginFailedException), Status = HttpStatusCode.Unauthorized)]
public UserProfile Login(UserCredentials userCred)
在我Login()
功能,我不是抛出一个UserNotFoundException
或LoginFailedException
。
我HandleExceptionAttribute
看起来是这样的:
public class HandleExceptionAttribute : ExceptionFilterAttribute
{
public Type Type { get; set; }
public HttpStatusCode Status { get; set; }
public override void OnException(HttpActionExecutedContext context)
{
var ex = context.Exception;
ResponseHelper.CreateException(Status, ex.Message);
}
}
我要的是能够处理将要抛出什么样的异常,并在属性,在这里我指定的HttpStatusCode妥善处理。
使用此代码的问题是始终调用最顶层的属性。所以即使例外是LoginFailedException
我总是会得到UserNotFoundException
和404代码返回给客户端。
我该如何做到这一点?
太棒了,非常感谢你! – Gaui 2014-09-27 22:26:26