C# HttpHandler被忽略,取而代之的是route
我构建了一个定制的HttpHandler,每当负载平衡器请求特定资源时,它就会发出一个状态页 更多背景:它不能是控制器,因为我需要能够与其他程序集共享它,公司的编码策略是不允许来自其他程序集的控制器。 此外,我不能使用委托处理程序,因为我不想通过添加全局消息处理程序来影响管道 因此,我在web.config中有以下内容:C# HttpHandler被忽略,取而代之的是route,c#,asp.net,asp.net-web-api,httphandler,asp.net-web-api-routing,C#,Asp.net,Asp.net Web Api,Httphandler,Asp.net Web Api Routing,我构建了一个定制的HttpHandler,每当负载平衡器请求特定资源时,它就会发出一个状态页 更多背景:它不能是控制器,因为我需要能够与其他程序集共享它,公司的编码策略是不允许来自其他程序集的控制器。 此外,我不能使用委托处理程序,因为我不想通过添加全局消息处理程序来影响管道 因此,我在web.config中有以下内容: <system.web> ... <httpHandlers> <!-- Status Page-->
<system.web>
...
<httpHandlers>
<!-- Status Page-->
<add verb="GET" path="*" type="Web.Api.Framework.StatusPageHandler, Web.Api.Framework" />
</httpHandlers>
...
</system.web>
<system.webServer>
...
<handlers>
<clear/>
<add name="StatusPageHandler" path="*" verb="GET" type="Web.Api.Framework.StatusPageHandler, Web.Api.Framework" />
</handlers>
...
</system.webServer>
我偶然发现了一个url,它确实可以工作:,但这并不理想——我们不想以那种“丑陋”的方式扩展url
如何让它工作?一种让它工作的方法。像这样更改Web.Config
<add name="StatusPageHandler" path="status" verb="GET"
type="Web.Api.Framework.StatusPageHandler, Web.Api.Framework" />
在Global.asax(RouteConfig.cs?)中添加行以忽略此路由。确保在routes.MapRoute
之前添加此行
routes.IgnoreRoute(“状态”)代码>您能解释一下“我不能使用委派处理程序,因为我不想通过添加全局消息处理程序来影响管道”吗?通过添加一个HttpHandler,您的应用程序正在影响管道,只是在一个不同的地方。我的理解是不对的。我认为web配置定义将是实现这一点的最有效方法,框架将决定使用我的处理程序;这条线足以让它工作。我有一个标志指示是否应显示诊断信息-。即使在我添加了ignore之后,它也不起作用,但在我添加routes时它起作用。IgnoreRoute(“status/diag”);谢谢你的帮助@Badrit这对我来说非常有效。在WebApi2中,忽略路由需要两个参数(名称和路径),因此它将是routes.IgnoreRoute(“myroutename”、“status”)
还要注意,webconfig行位于system.webServer/handlers
<add name="StatusPageHandler" path="status" verb="GET"
type="Web.Api.Framework.StatusPageHandler, Web.Api.Framework" />