我使用Microsoft ASP.NET Web API構建RESTful服務。ASP.NET Web API從響應中刪除HttpError
我的問題涉及HttpErrors,當出現問題時(例如,400錯誤請求或404未找到),Web API將向用戶返回給用戶。
的問題是,我不希望得到系列化HttpError響應內容,因爲它有時會提供太多的信息,因此它違反了OWASP安全規則,例如:
請求:
http://localhost/Service/api/something/555555555555555555555555555555555555555555555555555555555555555555555
作爲迴應,我得到的當然是400,但有下列內容的信息:
{
"$id": "1",
"Message": "The request is invalid.",
"MessageDetail": "The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'MyNamespaceAndMethodHere(Int32)' in 'Service.Controllers.MyController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
}
像這樣的東西,不僅表明我WebServic e爲基於ASP.NET的WebAPI技術(這是不是壞的),而且它給我的命名空間,方法名,參數等一些信息
我試圖設置IncludeErrorDetailPolicy在Global.asax中
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Never;
是的,這確實不錯,現在結果不包含MessageDetail部分,但仍然,我不想得到這個HttpError。
我還構建了自定義的DelegatingHandler,但它也影響我自己在控制器中生成的400和404,我不希望發生這種情況。
我的問題是: 是否有任何方便的方法來擺脫響應內容序列化的HttpError?我希望用戶能夠回覆他的不良請求的是響應代碼。
嗯,我想這將是一件好事,但在我的申請,我回到我自己的HttpResponseMessages,有時是400錯誤的請求,例如,如果有人想插入新記錄到我的數據庫,他使用控制器PostNewRecord方法。他插入的記錄會通過驗證,如果它檢測到某些字段丟失,控制器會返回錯誤的請求,並附帶我自己的消息,指出某些字段爲空。在你的解決方案中,MyApiControllerActionInvoker會攔截該響應,並刪除我不想發生的消息。我只想刪除Web API生成的消息。 –
對於鏈接的文章。大讀重:頭 –