2013-03-17 18 views
3

我正在嘗試寫一個文件到響應下載。我用:如何將文件寫入Internet Explorer Mobile的響應?

 Response.Clear(); 
     Response.AddHeader("content-disposition", "attachment;filename=" + name); 
     Response.ContentType = GetMimeType(path); 
     Response.BinaryWrite(File.ReadAllBytes(path).ToArray()); 
     Response.End(); 

這適用於多個桌面瀏覽器。但是,在Windows Phone 8設備上的Internet Explorer Mobile 10上,它會失敗。正如預期的那樣,我得到一個屏幕顯示消息「點擊打開」。

然而,當我點擊郵件,它定位到與URL「默認[X]熱媒」空白頁。到目前爲止,「x」已經是1,2和3。如果我將頁面添加到我的收藏夾,則可以看到Default [x] .html的完整URL爲「file:// C:\ Data \ Users \ DefApps \ AppData \ INTERNETEXPLORER \ INetCache \ WNW0K564 \ Default [x]」。 HTM」。

這是相同的,無論該文件的擴展名或MIME類型是什麼。我很難理解爲什麼會發生這種情況。是否有另一種方法將文件寫入與IE Mobile兼容的響應中?

正如我所說的,無論文件擴展名還是MIME類型,都會失敗。舉一個例子,我覈實情況是:

filename: themes.ppt, MIME Type: application/vnd.ms-powerpoint 

所有文件下載罰款,如果鏈接直接,但我不能出於安全原因這樣做。我不想臨時複製這些文件並鏈接到這些副本,但是如果我找不到將它們寫入響應的方法,我將不得不這樣做。

+0

有多大文件,有什麼IIS版本是你使用和你在調試模式? – user2154065 2013-03-17 06:20:00

+0

這些文件的大小從0.1MB到5MB不等。我正在使用IIS 7,並且我不處於調試模式。 – msbg 2013-03-17 06:23:26

回答

1

我想通了什麼導致這個問題。爲了讓在其中我寫的文件給客戶端的頁面,我用

Response.Redirect("downloadfile.aspx?" + ...); 

出於某種原因,這是導致在Windows Phone設備的問題。我改變它,以便頁面更改在客戶端完成。這解決了這個問題。你也許可以使用JavaScript來做到這一點:

location.href = "downloadfile.aspx?" + ...; 

但是我最終只使用一個鏈接,直接鏈接到我的下載頁面(downloadfile.aspx)

+0

任何人有任何想法,爲什麼我的解決方案修復它? – msbg 2013-03-22 21:14:56

0

這解決了這個問題上的IIS 8和.NET 4.5結合WP 8:

它的工作在調試模式,但不能與調試=「假」。該頁面沒有采取90秒的執行,但我不得不手動設置ScriptTimeout:

Server.ScriptTimeout = 120; 

或在web.config:

<configuration> 
    <system.web> 
     <compilation debug="false" targetFramework="4.5" /> 
    </system.web> 
</configuration> 

在非調試模式下的默認值是90秒。

+0

不幸的是,這似乎並不適合我。我會升級到IIS 8和.NET 4.5,但我沒有專用服務器,我的託管提供商GoDaddy沒有提供IIS 8或.NET 4.5。 – msbg 2013-03-17 16:17:14