2010-06-03 53 views
3

我有一個Web服務,最終用戶將上傳ZIP壓縮文件,這個壓縮文件可能非常大(一個測試文件超過200MB)。我希望主動處理過大的文件,並優雅地處理大小限制的上傳失敗。如何在IIS上使用ASP.NET查找POST的大小限制?

由於Web應用程序將部署在客戶的機器上,因此我不能輕易確保配置符合任何固定大小。我已經記錄瞭如何使用appcmd命令爲他們設置requestLimits.maxAllowedContentLength值超過30MB的默認值。

但我想在網絡應用程序中處理它;我希望兩件事情:

  1. 爲了顯示他們啓動文件上傳,沿着線的東西在頁面上的電流限制:

    每個文件上傳限制爲15MB如果你的檔案較大,(等等,等等,等等)

  2. 爲了給出一個有意義的錯誤是超過了大小時。目前,數據需要很長時間才能發送,然後我看到一個誤導性的404頁面。

有什麼想法?

[編輯]

http://www.developer.com/db/article.php/10920_3426051_2/Limiting-Upload-Sizes-with-ASPNET.htm

我發現上面的文章 - 但同時我可以攔截我一直得到在瀏覽器中的連接復位錯誤上Request.Redirect()Context.RewritePath()所以它實際上並沒有比404好。嗯,實際上這是VS2008的調試服務器,而不是IIS。

回答

3

爲了讓您可以使用此

protected int GetMaxUploadSize() 
{ 
    System.Web.Configuration.HttpRuntimeSection httpRuntimeSec = (System.Web.Configuration.HttpRuntimeSection)ConfigurationManager.GetSection("system.web/httpRuntime"); 
    if (httpRuntimeSec != null) 
    { 
     return httpRuntimeSec.MaxRequestLength; 
    } 
    else 
    { 
     return 0; 
    } 
} 

也添加到您的web.config中masxAllowed內容:

<system.webServer> 
<security> 
    <requestFiltering> 
     <requestLimits maxAllowedContentLength="1000000" /> 
    </requestFiltering> 
</security> 

對於您的第二個問題我會建議使用客戶端所以你可以在上傳之前驗證文件大小,一個選項可能是silverlight

+0

謝謝,但是這是「web.config」設置,通過它我可以控制(我已經設置爲128MB),除非他們改變它。我正在尋找IIS設置,默認爲30MB。 – NVRAM 2010-06-03 20:42:14

+0

我讀到爲了避免IIS塊,你可以添加到您的web.cofig(have't嘗試) <的requestFiltering> alejandrobog 2010-06-03 20:50:19

+0

謝謝,但正如我所提到的,我已經設置爲〜128MB。有一個IIS限制,默認爲30MB,這是我想讀的。 – NVRAM 2010-06-03 20:52:52

相關問題