Asp.net mvc 3 ASP.NET FileContentResult在生产中始终为404
我有一个ASP.NETMVC3Web应用程序,它的行为很奇怪。有一个操作允许我下载测试文件:Asp.net mvc 3 ASP.NET FileContentResult在生产中始终为404,asp.net-mvc-3,http-status-code-404,web-deployment,Asp.net Mvc 3,Http Status Code 404,Web Deployment,我有一个ASP.NETMVC3Web应用程序,它的行为很奇怪。有一个操作允许我下载测试文件: [HttpGet] public ActionResult Download() { var cd = new System.Net.Mime.ContentDisposition { FileName = "test_file.txt", Inline = false,
[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错误。有人知道为什么会有这种差异,以及如何解决它吗?原来问题是路由和IIS配置的结合。我有一些操作参数,其中一个包含文件扩展名。我已经设置了一条路线,以便参数符合格式
../Download/[text].txt
而不是
../Download?[text].txt
IIS将此读取为试图访问文件系统上的文件。我删除了自定义路由,并解决了所有问题。结果表明,问题是路由和IIS配置的组合。我有一些操作参数,其中一个包含文件扩展名。我已经设置了一条路线,以便参数符合格式
../Download/[text].txt
而不是
../Download?[text].txt
IIS将此读取为试图访问文件系统上的文件。我删除了自定义路由,并解决了所有问题。其他操作是否按预期工作?您的问题可能与IIS和应用程序的配置有关,而不是与代码有关;例如,目标服务器是否支持MVC应用程序?感谢您的回复,您完全正确,昨晚意识到了这个问题。将在下面回答!其他操作是否按预期工作?您的问题可能与IIS和应用程序的配置有关,而不是与代码有关;例如,目标服务器是否支持MVC应用程序?感谢您的回复,您完全正确,昨晚意识到了这个问题。将在下面回答!这促使我在javascript中发现了我愚蠢的硬编码url,这意味着在投入生产时没有相对路径。感谢这促使我在javascript中发现了我愚蠢的硬编码url,这意味着在投入生产时没有相对路径。谢谢