gpt4 book ai didi

c# - HttpHandler 被忽略以支持路由

转载 作者:行者123 更新时间:2023-11-30 17:01:17 24 4
gpt4 key购买 nike

我构建了一个自定义的 HttpHandler,它会在负载均衡器请求特定资源时发出状态页面。

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

所以我在 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。如果我删除默认 Controller 的资源映射(从 global.asax),它就会工作。即在 global.asax 中没有以下语句它可以工作:

routes.MapRoute("Default", "{controller}", null, null);

我偶然发现了一个它确实有效的网址:http://foo.bar/status/XXX ,但这并不理想 - 我们不想以那种“丑陋”的方式扩展 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("status");

关于c# - HttpHandler 被忽略以支持路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21191772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com