原因
loadTOCNode(1, 'cause');
Web 服務器計算機的硬件配置決定您可以成功下載的最大文件大小。當 ASP.NET 輔助進程(Aspnet_wp.exe,對于在 Internet 信息服務 6.0 [IIS] 上運行的應用程序,則為 W3wp.exe)執行文件下載請求時,會出現文件下載對話框。ASP.NET 輔助進程開始向 Microsoft Internet 信息服務進程(Inetinfo.exe 或 Dllhost.exe)發送數據。它不等您單擊“確定”即開始發送。
根據計算機的配置,IIS 進程可能會處理數據,也可能會將數據緩存在內存中。如果文件太大,在這兩個進程相互通信的過程中,數據將被緩存在內存中。這可能會導致服務器上的內存使用量增加。出現此錯誤的原因是 Web 服務器上的內存限制。
根據計算機的配置,IIS 進程可能會處理數據,也可能會將數據緩存在內存中。如果文件太大,在這兩個進程相互通信的過程中,數據將被緩存在內存中。這可能會導致服務器上的內存使用量增加。出現此錯誤的原因是 Web 服務器上的內存限制。
替代方法
loadTOCNode(1, 'workaround');
要解決此問題,請使用以下任一方法:
Visual C# .NET 代碼
將
DownloadFileName
替換為大于 100 MB 的文件的名稱。
? |
將數據分成較小的部分,然后將其移動到輸出流以供下載,從而獲取這些數據。以下代碼演示了如何完成此操作。
重要說明 :當您在 ASP.NET 應用程序的 Web.config 文件中將編譯元素的 debug 屬性值設置為 false 時,必須針對要下載的文件大小將 Server.ScriptTimeout 屬性設置為適當的值。默認情況下, Server.ScriptTimeout 值被設置為 90 秒。但是,當 debug 屬性被設置為 true 時, Server.ScriptTimeout 值將被設置為一個非常大的值(30,000,000 秒)。作為一名開發人員,您必須知道這可能會對您的 ASP.NET Web 應用程序的行為造成的影響。 此外,在下面的代碼中,您還必須知道與 FileStream 構造函數一起使用的參數值。指定的枚舉值會對提供的功能產生重大影響。有關更多信息,請參考 參考 一節中的 FileStream 鏈接。 |
System.IO.Stream iStream = null;
// Buffer to read 10K bytes in chunk:
byte[] buffer = new Byte[10000];
// Length of the file:
int length;
// Total bytes to read:
long dataToRead;
// Identify the file to download including its path.
string filepath = "DownloadFileName";
// Identify the file name.
string filename = System.IO.Path.GetFileName(filepath);
try
{
// Open the file.
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
System.IO.FileAccess.Read,System.IO.FileShare.Read);
// Total bytes to read:
dataToRead = iStream.Length;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
// Read the bytes.
while (dataToRead > 0)
{
// Verify that the client is connected.
if (Response.IsClientConnected)
{
// Read the data in buffer.
length = iStream.Read(buffer, 0, 10000);
// Write the data to the current output stream.
Response.OutputStream.Write(buffer, 0, length);
// Flush the data to the HTML output.
Response.Flush();
buffer= new Byte[10000];
dataToRead = dataToRead - length;
}
else
{
//prevent infinite loop if user disconnects
dataToRead = -1;
}
}
}
catch (Exception ex)
{
// Trap the error, if any.
Response.Write("Error : " + ex.Message);
}
finally
{
if (iStream != null)
{
//Close the file.
iStream.Close();
}
}
- 或 -
|
|
? |
為用戶提供用于下載文件的鏈接。
- 或 - |
? |
使用 Microsoft ASP 3.0 進行下載或者與 ASP 一起使用 Software Artisans FileUp。
- 或 - |
? |
創建 ISAPI 擴展以下載文件。
- 或 - |
? | 使用 FTP 下載文件。 |
<!-- Search Google -->
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
