2012-05-22 23 views
1

我想構建一個處理大文件上傳的HttpHandler(.NET Framework 4)。 這個想法是要抓住HttpWorkerRequest並閱讀正文流。我使用HttpWorkerRequest。 GetPreloadedEntityBody檢索收到的HTTP正文的第一個塊。IIS7上的HttpWorkerRequest.GetPreloadedEntityBody集成模式

這裏是我得到了預加載的實體:

IServiceProvider provider = (IServiceProvider)context; 
HttpWorkerRequest wr = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest)); 
byte[] entityBodyBytes = wr.GetPreloadedEntityBody(); 

這工作得很好,當我在我的本地IIS(5.1在Windows XP下),或在Visual Studio的Web服務器上運行自己的網站,但是當我在IIS 7(集成模式)下運行它,GetPreloadedEntityBody方法不斷地返回一個空字節數組。

任何想法爲什麼返回的字節數組的GetPreloadedEntityBody方法在IIS 7上爲空?

+0

我有完全相同的問題,我找到了一個解決方案,將IIS 7切換到經典模式 – Zzz

回答

0

我不是這方面的專家,但我認爲這是因爲在你問的時候身體沒有任何負載。嘗試在調用GetPreloadedEntityBody()之前檢查GetPreloadedEntityBodyLength()> 0。如果它是零,那麼你將不得不跳到你的文件閱讀循環。

相關問題