ASP.NET MVC 5自定义路由不起作用

ASP.NET MVC 5自定义路由不起作用

问题描述:

我想花几个小时让我的自定义路由工作。我总是得到一个404,并且看不到我做错了什么。ASP.NET MVC 5自定义路由不起作用

我试图获得的URL方案:/Download/fd39kssdf/myfile.zip。

这是路由,默认路由前的定义:

routes.MapRoute(
      name: "Download", 
      url: "Download/{hash}/{name}", 
      defaults: new { controller = "Download", action = "Index"} 
     ); 

这是名为“DownloadController”控制器代码:

public ActionResult Index(string hash, string name) 
    { 

    } 

我曾尝试添加参数的路径与UrlParameter.Optional和“”,但都没有工作。

错误在哪里?

谢谢!

+0

您还有其他线路吗?这是否在默认路由之前定义? – 2015-02-08 22:22:38

+0

它是在默认路由之前定义的,我目前只有这条路由和默认路由。 – 2015-02-08 22:23:59

你的问题是IIS有文件扩展名直接映射,所以你的请求甚至不会被传递给ASP.NET处理程序进行处理。它实际上是在该目录中寻找myfile.zip,该目录不存在,从而导致404错误。

<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="Download-MVC" 
     path="/Download/*" 
     verb="*" 
     type="System.Web.Handlers.TransferRequestHandler" 
     preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    </system.webServer> 
</configuration> 
+0

你是个天才! ;-) 非常感谢你!现在问题已经很清楚了,但我永远不会想到这一点。完美的作品! – 2015-02-09 19:27:59

+0

你非常欢迎。如果您不介意,请接受我的回答,因为这对您有用。 – 2015-02-09 19:33:14

+0

对不起,我试图投票,但没有奏效,因为我没有足够的声望。然后我没有试图接受答案。现在做了! – 2015-02-09 19:41:35