小编典典

URL 中的点导致 404 与 ASP.NET mvc 和 IIS

all

我有一个项目要求我的 URL 在路径中有点。例如,我可能有一个 URL,例如 www.example.com/people/michael.phhelps

带有点的 URL 会生成 404。我的路由很好。如果我传入迈克尔菲尔普斯,没有点,那么一切正常。如果我添加点,我会收到 404 错误。示例站点在带有
IIS8 Express 的 Windows 7 上运行。URLScan 未运行。

我尝试将以下内容添加到我的 web.config 中:

<security>
  <requestFiltering allowDoubleEscaping="true"/>
</security>

不幸的是,这并没有什么不同。我刚刚收到 404.0 Not Found 错误。

这是一个 MVC4 项目,但我认为这无关紧要。我的路由工作正常,并且我期望的参数在那里,直到它们包含一个点。

我需要配置什么才能在我的 URL 中添加点?


阅读 68

收藏
2022-04-15

共1个答案

小编典典

我通过编辑我的网站的 HTTP 处理程序来完成这项工作。对于我的需要,这很好用并解决了我的问题。

我只是添加了一个新的 HTTP 处理程序来查找特定的路径条件。如果请求匹配,它会正确发送到 .NET 进行处理。我对 URLRewrite hack 或启用
RAMMFAR 的解决方案更满意。

例如,让 .NET 处理 URL **www.example.com/people/michael.phelps 将以** 下行添加到您网站的
web.configsystem.webServer / handlers元素中:

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

编辑

还有其他帖子表明此问题的解决方案是RAMMFARRunAllManagedModulesForAllRequests。启用此选项将为所有请求启用所有托管模块。这意味着静态文件(如图像、PDF
和其他所有文件)将在不需要时由 .NET 处理。除非您有特定情况,否则最好不要使用此选项。

2022-04-15