我设置了以下路由: routes.MapRoute(
"Download", // 路由名称
"Download/{filename}", // 带有参数的 URL
new { controller = "Download", name = "Download", action = "Index", filename = UrlParameter.Optional } // 参数默认值
);目的是想访问http://localhost/Download/abc.rar的时候交给DownloadController去处理,在控制器中能获取到文件名,然后再去读取相应的文件public ActionResult Index(string filename)
{ string file = "d:\files\"+ filename;
return this.File(file, "application/octet-stream", filename);
}
在本地测试的时候(用的IIS Express或VS的服务器)没有发现什么问题,但是部署到服务器上的IIS的时候,提示404错误,不能找到文件。我想可能是IIS中处理的时候把文件名当做文件去找了,并没有交给URL路由来处理。,但是如果访问http://localhost/Download/abc,不加后缀名就可以交给URL路由来处理。不知道有没有什么办法在哪里设置一下让所有的URL都由路由来处理呢?
"Download", // 路由名称
"Download/{filename}", // 带有参数的 URL
new { controller = "Download", name = "Download", action = "Index", filename = UrlParameter.Optional } // 参数默认值
);目的是想访问http://localhost/Download/abc.rar的时候交给DownloadController去处理,在控制器中能获取到文件名,然后再去读取相应的文件public ActionResult Index(string filename)
{ string file = "d:\files\"+ filename;
return this.File(file, "application/octet-stream", filename);
}
在本地测试的时候(用的IIS Express或VS的服务器)没有发现什么问题,但是部署到服务器上的IIS的时候,提示404错误,不能找到文件。我想可能是IIS中处理的时候把文件名当做文件去找了,并没有交给URL路由来处理。,但是如果访问http://localhost/Download/abc,不加后缀名就可以交给URL路由来处理。不知道有没有什么办法在哪里设置一下让所有的URL都由路由来处理呢?
打开 IIS Microsoft 管理控制台 (MMC),右键单击本地计算机名称,然后单击“属性”。
单击“MIME 类型”。
单击“新建”。
在“扩展名”框中,键入星号 (*)。
在“MIME 类型”框中,键入 application/octet-stream。
应用新设置。请注意,您必须重新启动“万维网发布服务”或等待工作进程循环以使更改生效。