gpt4 book ai didi

c# - ASP.NET MVC 路由 : bypass staticfile handler for path

转载 作者:可可西里 更新时间:2023-11-01 03:01:09 27 4
gpt4 key购买 nike

我已经用谷歌搜索和修补了几个小时,但并没有取得太大进展,所以希望这里有人能提供帮助。

我正在尝试将所有请求发送到特定路径以由第 3 方组件处理。

编辑而且我需要对所有其他路径的所有请求都正常运行。

我正在使用带有通配符映射的路由处理程序,如下所示:

routes.Add(new Route("pathiwant/{*EverythingElse}", new MyRouteHandler()));

所有传统路由都正确转发到处理程序,处理程序很好地转发到第 3 方组件。当我点击静态文件(.html、.txt 等)时,它们会被 StaticFile 处理程序而不是我的处理程序接收,因此我试图像这样(简化)关闭 StaticFile 处理程序:

<system.webServer>
<handlers>
<remove name="StaticFile"/>
</handlers>
</system.webServer>

这会关闭 StaticFile 处理程序,但 MVC 仍然不会选择路由。

我不想回过头来创建我自己的处理程序并注入(inject) ASP 请求堆栈,因为似乎应该有一种适合 MVC 的方式来执行此操作。

有什么想法吗?谢谢。

最佳答案

这里有几个选项。

http://www.hanselman.com/blog/BackToBasicsDynamicImageGenerationASPNETControllersRoutingIHttpHandlersAndRunAllManagedModulesForAllRequests.aspx

如果您真的希望所有请求都通过 asp.net 管道运行,那么您需要。

<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

更新

另一种选择,尤其是当您需要绕过静态处理程序的情况仅限于您站点的一个子集时,是使用以下方法

  <add name="ApiURIs-ISAPI-Integrated-4.0"
path="/subdirectory/*"
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />

考虑到在 mvc 站点上,大多数静态文件是从几个众所周知的目录中处理的,这是一个更好的选择。

关于c# - ASP.NET MVC 路由 : bypass staticfile handler for path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11257768/

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