错误处理在Web Api自我托管服务器的ActionFilterAttribute
问题描述:
我有一个项目运行ASP.Net WebApi在自我托管的配置,我使用ActionFilterAttribute
类作为过滤器的一些安全检查和ExceptionFilterAttribute
作为异常处理类。错误处理在Web Api自我托管服务器的ActionFilterAttribute
当我在HttpResponseException
类型的ApiController
中发生异常时,ExceptionFilterAttribute
类正如预期的那样被忽略。
的问题是,当我在ActionFilterAttribute
它是类型的安全过滤器提高HttpResponseException
类型的异常由ExceptionFilterAttribute
类抓获。
当调试我已经发现该异常正在改变到
处理HTTP请求的导致异常。有关详细信息,请参阅 例外,此 例外的'响应'属性返回的HTTP响应。
我该怎么做才能防止这种行为。
答
此行为看起来像一个错误。你能分享你的行为过滤器的样子吗? 顺便说一下,将action过滤器actioncontext的Response属性设置为Http响应会使管道短路,并想知道是否可以避免从动作过滤器中引发HttpResponseException。
'公共类SecureApiAccessFilter:ActionFilterAttribute { 公共覆盖无效OnActionExecuting(HttpActionContext ActionContext中) {如果(cookie_expired(actionContext.Request)){回报抛出新HttpResponseException(requestMessage.CreateErrorResponse(HttpStatusCode.Unauthorized, “会话超时” ));}' – 2013-02-26 05:29:34
感谢您的回复,它像一个魅力一样工作,我用'actionContext.Response = requestMessage.CreateErrorResponse(HttpStatusCode.Unauthorized,“Session timed out”)替换了throw;'' – 2013-02-26 05:36:05