在ASP.NET MVC和IIS中,URL中的点会导致404错误。
在ASP.NET MVC和IIS中,URL中的点会导致404错误。
我有个项目需要在路径中有点。例如,我可能会有一个 URL,如 www.example.com/people/michael.phelps。
带点的 URL 会生成 404 错误。我的路由没问题。如果我传入没有点的 michaelphelps,一切正常。如果我加上点,我会得到 404 错误。该示例网站在运行 Windows 7 和 IIS8 Express。URLScan 未运行。
我尝试将以下内容添加到我的 web.config 中:
不幸的是,这并没有什么区别。我只收到了 404.0 没有找到的错误。
这是一个 MVC4 项目,但我不认为这是相关的。我的路由工作正常,我期望的参数都有,直到它们包括一个点。
我需要配置什么才能在 URL 中使用点?
在一番探索后,我发现 relaxedUrlToFileSystemMapping 对我并不起作用,实际上,在我的情况下,将 RAMMFAR 设置为 true 起到了作用,同样适用于(.net 4.0 + mvc3) 和(.net 4.5 + mvc4)。\n
\n当设置 RAMMFAR 为 true 时,请注意Hanselman关于RAMMFAR和性能的文章。
我通过编辑我的网站的HTTP处理程序使其工作。对于我的需求,这个方法可以很好地解决我的问题。
我只是添加了一个新的HTTP处理程序,它会查找特定的路径标准。如果请求符合条件,它会被正确地发送到.NET进行处理。相比于URL重写hack或启用RAMMFAR,我更喜欢这个解决方案。
例如,要让.NET处理URL www.example.com/people/michael.phelps,请在您网站的web.config中的system.webServer/handlers
元素中添加以下行:
编辑
还有其他帖子建议解决这个问题的方法是启用RAMMFAR
或RunAllManagedModulesForAllRequests
。启用此选项将为所有请求启用所有托管模块。这意味着不需要处理的静态文件,如图像、PDF文件和其他所有文件都会被.NET处理。如果您没有特定的用例,则最好不要打开此选项。