代码之家  ›  专栏  ›  技术社区  ›  NotDan

为什么EndGetResponse抛出ArgumentNullException?

  •  5
  • NotDan  · 技术社区  · 14 年前

    //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)
    
    2 回复  |  直到 12 年前
        1
  •  1
  •   Igor V Savchenko    14 年前

    在我的例子中,这是多线程问题。看起来主线程和其中一个工作线程(带委托)试图共享某个变量。所以我建议您尝试将所有类级别的变量移到方法体中(或者为关键部分添加锁),然后使用活动的“线程”窗口调试应用程序。
    若要启用此窗口,请单击“调试期间的调试”=>“Windows=>“线程”。我希望它能帮助你克服这个奇怪的错误。

        2
  •  1
  •   slipjig    14 年前

    每当我无法到达服务器发出请求时,都会出现此异常。这可能是可以理解的,但是对于任何长时间运行的请求,我也会看到这个错误,即使我 可以 到达服务器。持续时间超过10秒的请求总是导致客户端失败,并出现此异常。

    它可能与Silverlight运行的环境有关。你说在IE中,错误不会发生,但在Firefox和Chrome中却会发生。我的应用程序浏览器快用完了。由此,我只能假设客户机堆栈仍然以某种方式利用IE,如果它是在IE中运行的。