C# 如何使MVC接受参数中的点?

C# 如何使MVC接受参数中的点?,c#,asp.net-mvc,model-view-controller,http-status-code-404,C#,Asp.net Mvc,Model View Controller,Http Status Code 404,我有以下路径配置: routes.MapRoute( name: "Downloads", url: "downloads/{filename}", defaults: new { controller = "Downloads", action = "Index", filename = UrlParameter.Optional } ); 以及以下控制器代码: public ActionResult I

我有以下路径配置:

routes.MapRoute(
            name: "Downloads",
            url: "downloads/{filename}",
            defaults: new { controller = "Downloads", action = "Index", filename = UrlParameter.Optional }
        );
以及以下控制器代码:

public ActionResult Index(string filename)
    { ...

当我调用这个动作时,我得到一个404。当我调用文件名中没有点的操作时,它会工作。如何让MVC将完整文件名传递给我的参数文件名?

谢谢@Coder。我在我的web.config中添加了以下代码(),并且成功了:

<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> ...

...

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

克服这一问题的一个简单方法是为您自己的方案定义一个处理程序,例如:

<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>

查看此链接:谢谢!我自己没找到那个。。。我真丢脸;)