我有一個控制器操作返回一個pdf文檔。根據站點切換變量,它將選擇多個源文件中的一個,將其重命名並將其返回給瀏覽器。這工作完全在Chrome和Firefox,但在IE8,出現下載對話框,然後在下面的錯誤消息框...ASP.Net MVC FilePathResult在IE中失敗
「Internet Explorer無法從 www.mydomain.com下載 FullTermsAndConditions。
Internet Explorer無法打開 此網站。請求的網站 要麼不可用,要麼不能找到 ,請稍後重試。
這是我的代碼...
public ActionResult FullTermsAndConditions()
{
var targetFileName = LookupTargetFileName();
var fullPath = System.IO.Path.Combine(DownloadsPath, LookupSourceFileName());
var result = File(fullPath, "application/pdf");
result.FileDownloadName = targetFileName;
return result;
}
任何人都可以看到我做了什麼錯?
更多信息...
我下面的代碼添加到我的控制器來查看頭...
protected override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
WriteResponseHeadersToFile(@"C:\temp\ResponseHeaders.txt", filterContext.HttpContext.Response);
}
private static void WriteResponseHeadersToFile(string fileName, System.Web.HttpResponseBase response)
{
using (StreamWriter writer = new StreamWriter(fileName, true))
{
writer.Write("Reponse started @ ");
writer.WriteLine(DateTime.Now.ToShortTimeString());
var allHeaders = response.Headers;
for (int i = 0; i < allHeaders.Count; i++)
writer.WriteLine("{0} = {1}", allHeaders.Keys[i], allHeaders[i]);
writer.Close();
}
}
這是結果...
Reponse started @ 09:02
Server = Microsoft-IIS/7.0
X-AspNetMvc-Version = 1.0
Content-Disposition = attachment; filename =「Full Terms and Conditions.pdf」
什麼是'targetFileName'?你可以顯示'FullTermsAndConditions()'產生的HTTP響應頭嗎? – bzlm 2010-02-02 08:11:14
targetFileName將是'FullTermsAndConditions.pdf',是用戶在下載時看到的名稱。 你能給我一個方法來檢查標題嗎? – 2010-02-02 08:28:28
主要問題現在有更多的信息。 – 2010-02-02 09:04:46