2009-06-04 277 views
0

在我們的應用程序中,我們經常會有一個按鈕,它會執行回發,獲取數據,將其轉換爲excel/PDF,並通過Response.Write或Response.BinaryWrite將其傳輸到客戶端。當我們在彈出或不彈出時,這很好地工作。ASP.NET文件下載問題

我們剛剛實現了一項創建msg文件的新功能。但是,當流式傳輸到客戶端時(與之前的代碼相同),我們收到錯誤 - 「Internet Explorer無法打開此網站」。我們使用查詢字符串參數重定向到另一個頁面,該參數指明要獲取字節的文件並將其流式傳輸到客戶端。

有沒有人遇到過這個?此功能在開發機器上正常工作,但在分段(Server 2003,IIS 6)它已損壞並拋出此錯誤

+0

對於大型文件,我認爲Response.TransmitFile比Response.Write/BinaryWrite更好用。 – Kane 2009-06-05 06:20:47

+0

我同意凱恩。 – 2010-07-01 04:48:03

回答

0

它可能是一個權利問題?您正在創建的excel/pdf是否保存到文件中,然後被強制下載? 如果是,則WEB-User-IIS a/c需要訪問保存文件的文件/文件夾區域。

我在使用ASP.Net中的Microsoft.Excel或Excel(COM)創建Excel文件時遇到了類似的問題 - 它可以在我的開發機器上工作(我是本地管理員),但無法工作服務器。

服務器上的文件是在管理員帳戶下創建的,因此Web-User-IIS帳戶無權訪問該文件,因此無法訪問該文件。 IIS中有一個選項用於更改Excel運行IIS帳戶的用戶。


另外,application/octet-stream作爲MIME類型在推送文件下載時一直很適合我。

0

我已經做了非常相似的事情。沒有看到你的代碼,它不可能說你到底是什麼問題,但這裏的幾件事情要檢查:

  • 你的Response.ContentType設置爲正確的MIME類型的文件?
  • 您是否在調出Response.End()後調用了該文件的字節。如果沒有,那麼頁面HTML可能被追加到文件中,這會破壞它。
+0

我們將Response.ContentType設置爲正確的值。奇怪的是文件流頁面正在另一個位置使用,它工作正常。只是在這種情況下,它不起作用。我們做了一個可以完成工作的解決方法(點擊一個鏈接下載),但它困擾着我爲什麼不能正常工作。 – bdowden 2009-06-04 12:41:19