2010-07-25 81 views
5

以下代碼行在Silverlight中的Chrome和Firefox下引發ArgumentNullException。我正在使用HttpWebRequest將文件發佈到服務器。 IE中不會發生異常,只會在我上傳較大的文件(5mb)時發生。在IE下它工作得很好。在文檔中我沒有看到爲什麼代碼會拋出此異常的任何原因。爲什麼EndGetResponse拋出ArgumentNullException?

//note that asyncResult is not null 
response = (HttpWebResponse)request.EndGetResponse(asyncResult); 

這裏是異常的堆棧跟蹤:

at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) 
at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState) 
at System.Net.Browser.AsyncHelper.<>c__DisplayClass2.<BeginOnUI>b__0(Object sendState) 

和內部異常:

at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state) 
at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 
at DC.FileUpload.FileUpload.<>c__DisplayClassc.<UploadFileEx>b__a(IAsyncResult asyncResult) 

回答

1

我完全一樣奇怪的錯誤與HttpWebResponse(但絕對是其他情況)几几天前。 在我的情況下,這是多線程問題。看起來像主線程和工作線程(與委託)之一嘗試共享一些變量。所以我可能會建議你嘗試將所有的類級變量移入方法體(或者爲關鍵部分添加鎖),然後用活動的「線程」窗口調試你的應用程序。
要啓用此窗口,請在調試期間單擊Debug => Windows => Threads。我希望它能幫助你解決那個奇怪的錯誤。

1

我無法到達服務器發出請求時就會收到此異常。這可能是可以理解的,但對於任何長時間運行的請求,我也會看到這個錯誤,即使我可以通過到達服務器。持續時間超過10秒的請求始終導致客戶端因此異常而失敗。

它可能與運行Silverlight的環境有關。你聲明在IE中,錯誤不會發生,但它在Firefox和Chrome中。我的應用程序正在運行瀏覽器外。從這我只能假設客戶端堆棧仍然在某些方面利用IE瀏覽器,如果它在IE中運行。

+0

+1這似乎與我自己的情況一致。 – jv42 2012-02-02 15:14:54

相關問題