2013-09-23 47 views
1

我有一個ASP.NET MVC 3的Web應用程序行爲奇怪。還有,讓我下載測試文件的操作:ASP.NET FileContentResult總是404在生產

[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」的內容是「你好」)。

發佈並隨IIS 6一起部署時,總會返回404錯誤。任何人都知道爲什麼區別以及如何解決它?

+1

其他操作是否按預期工作?您的問題可能與您的IIS和您的應用程序的配置有關,而不是您的代碼;例如,目標服務器是否支持MVC應用程序? –

+0

感謝您的回覆,您完全正確,昨晚意識到了這個問題。將在下面回答! –

回答

1

原來的問題是路由和IIS配置的組合。我有一些行動參數,其中一個包含文件擴展名。我已成立了一個路由,這樣的參數在格式

../Download/[text].txt 

代替

../Download?[text].txt 

IIS的在讀這是試圖訪問文件系統上的文件。我刪除了自定義路由,並且全部解決了。

+0

這促使我在JavaScript中發現我笨的硬編碼的URL,這意味着在投入生產時沒有相對路徑。謝謝 – Ian