我已经构建了一个自定义的HttpHandler,当负载均衡器请求特定资源时就会发布一个状态页面。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>
当我尝试访问处理器(http://foo.bar/status)失败有404如果我删除默认控制器的资源映射(从global.asax),那么它的作品。即没有在Global.asax中下面的语句它的工作原理:
routes.MapRoute("Default", "{controller}", null, null);
我在为它做工作的一个网址跌跌撞撞:http://foo.bar/status/XXX,但几乎理想的 - 我们不希望有延长的URL那“丑陋”的方式。
我该如何让它起作用?
你能否解释一下“我不能用委托处理程序,因为我不想加入一个全球性的消息处理影响管道”?通过添加一个HttpHandler来影响管道,只是在不同的地方。 –
够公平的。我的理解不对。我认为web配置定义将是实现这一目标的最有效方式,并且框架将决定使用我的处理程序。 – CarllDev