c# – 不接收BeginGetResponse的回调

我无法按照示例来获取回调.

我有以下代码:

 private void startWebRequest(object sender, EventArgs e)
    {
        Uri url = new Uri("http://localhost.com/dummyGet");
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
        request.BeginGetResponse(new AsyncCallback(ReadWebRequestCallback), request);
    }

    private void ReadWebRequestCallback(IAsyncResult callbackResult)
    { 
        Console.WriteLine("Don not get here");
        try
        {
            var req = (HttpWebRequest)callbackResult.AsyncState;
            using (var response = req.EndGetResponse(callbackResult))
            {
                Console.WriteLine("Code");
            }
        }
        catch
        {  }
    }

我整天都在反对这个问题,我可以在浏览器中看到get请求,或者在fiddler / wireshark中看到客户端.但是代码(ReadWebRequestCallback)不会被调用.

编辑:
另请注意,如果我使用WebClient和DownloadStringAsync,它可以工作,但我需要其他HTTP状态代码而不是404和200:

_client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompleted);
_client.DownloadStringAsync(_concurrentCheckUrl);
}

private void DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {// Works, gets here}

解决方法:

我不确定这是否是解决方案,但在调用回调之前是否已关闭拥有线程?作为银光我怀疑它,但我想我会提出来.

检查http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse.aspx – 注意

ThreadPool.RegisterWaitForSingleObject (result.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), myHttpWebRequest, DefaultTimeout, true);

  // The response came in the allowed time. The work processing will happen in the 
  // callback function.
  allDone.WaitOne();

这可能是你应该尝试Thread.Sleep.如果这不是问题,您是否可以通过添加断点或其他输出语句来确认代码永远不会被激活?

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...