2013-02-25 79 views
2

我有一个项目运行ASP.Net WebApi在自我托管的配置,我使用ActionFilterAttribute类作为过滤器的一些安全检查和ExceptionFilterAttribute作为异常处理类。错误处理在Web Api自我托管服务器的ActionFilterAttribute

当我在HttpResponseException类型的ApiController中发生异常时,ExceptionFilterAttribute类正如预期的那样被忽略。

的问题是,当我在ActionFilterAttribute类型的安全过滤器提高HttpResponseException类型的异常由ExceptionFilterAttribute类抓获。

当调试我已经发现该异常正在改变到

处理HTTP请求的导致异常。有关详细信息,请参阅 例外,此 例外的'响应'属性返回的HTTP响应。

我该怎么做才能防止这种行为。

回答

1

此行为看起来像一个错误。你能分享你的行为过滤器的样子吗? 顺便说一下,将action过滤器actioncontext的Response属性设置为Http响应会使管道短路,并想知道是否可以避免从动作过滤器中引发HttpResponseException。

+0

'公共类SecureApiAccessFilter:ActionFilterAttribute { 公共覆盖无效OnActionExecuting(HttpActionContext ActionContext中) {如果(cookie_expired(actionContext.Request)){回报抛出新HttpResponseException(requestMessage.CreateErrorResponse(HttpStatusCode.Unauthorized, “会话超时” ));}' – 2013-02-26 05:29:34

+0

感谢您的回复,它像一个魅力一样工作,我用'actionContext.Response = requestMessage.CreateErrorResponse(HttpStatusCode.Unauthorized,“Session timed out”)替换了throw;'' – 2013-02-26 05:36:05