2012-06-21 70 views
3

在通過asp.net文件上傳控件上傳一個相當大的文件(90 MB)或多或少2分鐘後獲取ERR_CONNECTION_RESET大文件上的asp.net文件上傳控制超時

在共享主機環境中測試這個,所以我不確切地知道哪些策略是對我執行的。

web.config設置足夠,我認爲:

<httpRuntime requestValidationMode="2.0" maxRequestLength="1000000" executionTimeout="45000" /> 

我應該尋找其他異步文件上傳控件?我是否缺少web.config設置?上傳控件對於緩慢連接上的大文件是不夠的嗎?

+0

什麼IIS版本在運行? – Blachshma

+0

根據我的主機控制面板的IIS 7的集成模式 – Hifilover

+1

我知道你說的是超時而不是文件大小,但這仍然可能指向你正確的方向:http://blog.twinharbor.com/2011/ 07/28 /修復 - iis7-maximum-upload-size/ – Blachshma

回答

1

可能有多種原因導致連接重置,並且將最大請求長度提高到一定程度,但您對正在查看異步文件上傳者是正確的。最重要的部分是用其中一個「塊」文件成小塊,所以避免了請求限制等等。我曾與plupload最佳體驗:

http://www.plupload.com/

下面是用於接收文件的一些代碼(這是MVC,但你可以重構在.NET經典中使用一個處理程序):

 [HttpPost]    
     public ActionResult UploadImage(int? chunk, int? chunks, string name) 
     { 
      var fileData = Request.Files[0]; 

      if (fileData != null && fileData.ContentLength > 0) 
      { 
       var path = GetTempImagePath(name); 
       fileSystem.EnsureDirectoryExistsForFile(path); 

       // Create or append the current chunk of file. 
       using (var fs = new FileStream(path, chunk == 0 ? FileMode.Create : FileMode.Append)) 
       { 
        var buffer = new byte[fileData.InputStream.Length]; 
        fileData.InputStream.Read(buffer, 0, buffer.Length); 
        fs.Write(buffer, 0, buffer.Length); 
       } 
      } 

      return Content("Chunk uploaded", "text/plain"); 
     } 
+0

謝謝你的替代理查德! – Hifilover