This question already has answers here:
Dots in URL causes 404 with ASP.NET mvc and IIS

(18个回答)


已关闭6年。




我有以下路由配置:
routes.MapRoute(
            name: "Downloads",
            url: "downloads/{filename}",
            defaults: new { controller = "Downloads", action = "Index", filename = UrlParameter.Optional }
        );

以及以下 Controller 代码:
public ActionResult Index(string filename)
    { ...

当我使用http://test.com/downloads/test.txt调用此 Action 时,我得到一个404。当我在文件名中不带点的情况下调用该 Action 时,它将起作用。如何使MVC将完整文件名传递给参数文件名?

最佳答案

发生这种情况的原因可能是,如果您的网址包含一个点,则II会将其作为“物理路径”网址而不是重写的网址来处理。

解决此问题的一种简便方法是为您自己的方案定义处理程序,例如:

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

关于c# - 如何使MVC接受参数中的点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28433853/

10-09 15:45
查看更多