【问题标题】:Error Handling in Web Api Self Hosted Server for ActionFilterAttributeActionFilterAttribute 的 Web Api 自托管服务器中的错误处理
【发布时间】:2013-02-25 11:09:56
【问题描述】:

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

当我在 ApiController 类型的 HttpResponseException 中引发异常时,ExceptionFilterAttribute 类将按预期忽略它。

问题是,当我在ActionFilterAttribute 类型的安全过滤器中引发HttpResponseException 类型的异常时,它正在ExceptionFilterAttribute 类捕获.

调试的时候发现那个异常被改成

处理 HTTP 请求导致异常。请参见 由 this 的 'Response' 属性返回的 HTTP 响应 详情例外。

我可以做些什么来防止这种行为。

【问题讨论】:

    标签: asp.net-web-api actionfilterattribute


    【解决方案1】:

    这种行为似乎是一个错误。你能分享一下你的动作过滤器是什么样子的吗? 顺便说一句,将动作过滤器 actioncontext 的 Response 属性设置为 Http 响应会导致管道短路,并且想知道是否可以避免从动作过滤器中抛出 HttpResponseException。

    【讨论】:

    • public class SecureApiAccessFilter : ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext actionContext) { if(cookie_expired(actionContext.Request)){return throw new HttpResponseException(requestMessage.CreateErrorResponse(HttpStatusCode.Unauthorized,"Session timed out"));}
    • 感谢您的回复,它就像一个魅力,我用actionContext.Response=requestMessage.CreateErrorResponse(HttpStatusCode.Unauthorized,"Session timed out");替换了投掷
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    相关资源
    最近更新 更多