2013-02-25 126 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