C# Web API-处理所有请求和错误
阅读以下问题后:C# Web API-处理所有请求和错误,c#,asp.net,iis,asp.net-web-api2,C#,Asp.net,Iis,Asp.net Web Api2,阅读以下问题后: 测试未通过IIS请求筛选的请求(特别是查询字符串长度),并希望执行以下操作: 防止IIS劫持任何错误 Web API/ASP.Net中的钩子来处理这些错误 web.config中的IIShttpErrors部分设置如下: <system.webServer> <modules runAllManagedModulesForAllRequests="true" /> <httpErrors existingRespon
- 防止IIS劫持任何错误
- Web API/ASP.Net中的钩子来处理这些错误
httpErrors
部分设置如下:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<httpErrors existingResponse="PassThrough" />
</system.webServer>
HTTP/1.1 404 Not Found
Date: Thu, 09 Apr 2015 10:58:34 GMT
Server: Microsoft-IIS/7.5
Content-Length: 0
protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
}
如果删除httpErrors
config部分,我们将返回IIS错误消息(404.15)。为了解决路由未被命中的问题,我尝试定义一个可以处理任何未知URL的全包路由:
config.Routes.MapHttpRoute(
name: "CatchAll",
routeTemplate: "{*url}",
defaults: new { controller = "Error", action = "NotFound"});
不幸的是,此控制器操作从未命中。在这一点之后,我想我应该尝试Web API跟踪模块,看看是否有任何Web API管道被命中,而不是调试窗口中没有显示任何内容
我能看到应用程序中的请求的唯一位置是Global.asax
,如下所示:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<httpErrors existingResponse="PassThrough" />
</system.webServer>
HTTP/1.1 404 Not Found
Date: Thu, 09 Apr 2015 10:58:34 GMT
Server: Microsoft-IIS/7.5
Content-Length: 0
protected void Application_PreSendRequestHeaders()
{
Response.Headers.Remove("Server");
}
如果我现在重新运行该请求,则头将正确删除,并在应用程序中查看request属性,所有内容似乎都已正确设置,甚至查询字符串也已正确保留
我有什么遗漏吗?我已经有了一个全局异常处理程序,它在别处使用,还有一个委托处理程序,它正在包装所有响应,但不幸的是,它们都没有被命中
有没有办法捕获这些请求并将其通过Web API发送,还是禁用请求过滤更好?您找到解决此问题的方法了吗?我遇到了同样的问题,我试图重定向到错误控制器上的方法。当我提出请求时,没有任何东西被击中。@ObiEff我想我没有击中。我想我可能在负载平衡器级别或类似级别处理过它