Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpHandler被忽略,取而代之的是route_C#_Asp.net_Asp.net Web Api_Httphandler_Asp.net Web Api Routing - Fatal编程技术网

C# HttpHandler被忽略,取而代之的是route

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-->

我构建了一个定制的HttpHandler,每当负载平衡器请求特定资源时,它就会发出一个状态页

更多背景:它不能是控制器,因为我需要能够与其他程序集共享它,公司的编码策略是不允许来自其他程序集的控制器。 此外,我不能使用委托处理程序,因为我不想通过添加全局消息处理程序来影响管道

因此,我在web.config中有以下内容:

<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" />