我设置了以下路由:            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都由路由来处理呢?

解决方案 »

  1. IIS6.0?设置允许未知MIME类型,以及ISAPI处理取消检测文件是否存在。
      

  2. 我用通配符应用程序映射可以解决了。但不知道你说的允许未知MIME类型是在哪里进行设置?
      

  3. http://www.cnblogs.com/host-2008/archive/2009/03/27/1422978.html注意:您只能在故障排除过程中将通配符映射添加到 IIS MIME 映射中,以作为一种临时解决方案。确定缺少 MIME 类型是问题的原因后,请删除通配符映射,然后添加需要处理的 MIME 类型的特定映射。 
    打开 IIS Microsoft 管理控制台 (MMC),右键单击本地计算机名称,然后单击“属性”。 
    单击“MIME 类型”。 
    单击“新建”。 
    在“扩展名”框中,键入星号 (*)。 
    在“MIME 类型”框中,键入 application/octet-stream。 
    应用新设置。请注意,您必须重新启动“万维网发布服务”或等待工作进程循环以使更改生效。
      

  4. 增加NETWORKSERVICE用户权限 试试看
      

类似问题 »