Asp.net mvc 3 ASP.NET FileContentResult在生产中始终为404

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,

我有一个ASP.NETMVC3Web应用程序,它的行为很奇怪。有一个操作允许我下载测试文件:

    [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,这意味着在投入生产时没有相对路径。谢谢