我已經構建了一個自定義的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