我有一个表现奇怪的ASP.NET MVC 3 Web应用程序。有一个动作可以让我下载一个测试文件:
[HttpGet]
public ActionResult Download()
{
var cd = new System.Net.Mime.ContentDisposition
{
FileName = "test_file.txt",
Inline = false,
};
Response.AppendHeader("Content-Disposition", cd.ToString());
return File(System.Text.Encoding.Unicode.GetBytes("HELLO THERE"), "text/plain");
}
在调试模式下它没有问题,我按预期获得文件下载(“test_file.txt”,内容为“HELLO THERE”)。
发布并使用IIS 6部署时,始终返回404错误。任何人都知道为什么差异以及如何解决它?
答案 0 :(得分:1)
原来问题是路由和IIS配置的组合。我有一些动作参数,其中一个包含文件扩展名。我设置了一条路线,以便参数格式为
../Download/[text].txt
而不是
../Download?[text].txt
IIS正在尝试访问文件系统上的文件。我删除了自定义路线,所有问题都已解决。