C# HttpWebRequest BeginGetResponse不工作

C# HttpWebRequest BeginGetResponse不工作,c#,asynchronous,httpwebrequest,httprequest,httpwebresponse,C#,Asynchronous,Httpwebrequest,Httprequest,Httpwebresponse,我正在尝试使用HttpWebRequest,我的BeginGetRequestStream可以工作,但它从未进入BeginGetResponse函数,我不知道为什么。。我搜索了几个小时,没有找到一个有效的解决方案 public void Initialize(IScheduler scheduler) { if(_isCloud) { HttpWebRequest request = (HttpWebRequest)WebR

我正在尝试使用HttpWebRequest,我的BeginGetRequestStream可以工作,但它从未进入BeginGetResponse函数,我不知道为什么。。我搜索了几个小时,没有找到一个有效的解决方案

    public void Initialize(IScheduler scheduler)
    {
        if(_isCloud)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_cloudMappingServer + "/Mapping/GetAllCentralPoints");

            request.ContentType = "application/x-www-form-urlencoded";
            request.Method = "POST";
            request.BeginGetRequestStream(new AsyncCallback(ReleaseReadCallback), request);

            // Instruct the thread to wait until we resume it
            _waitHandle.WaitOne();
            _waitHandle.Dispose();
        }
    }

    private void ReleaseReadCallback(IAsyncResult asynchronousResult)
    {
        try
        {
            HttpWebRequest httpRequest = (HttpWebRequest)asynchronousResult.AsyncState;

            using (Stream postStream = httpRequest.EndGetRequestStream(asynchronousResult))
            {
                using (MemoryStream memStream = new MemoryStream())
                {
                    string queryString = string.Empty;
                    byte[] bytes = System.Text.Encoding.UTF8.GetBytes(queryString);
                    memStream.Write(bytes, 0, bytes.Length);
                    memStream.Position = 0;

                    byte[] tempBuffer = new byte[memStream.Length];
                    memStream.Read(tempBuffer, 0, tempBuffer.Length);
                    postStream.Write(tempBuffer, 0, tempBuffer.Length);
                }
            }

            httpRequest.BeginGetResponse(new AsyncCallback(ReleaseResponseCallback), httpRequest);
        }
        catch (Exception ex)
        {
            var test = ex;
        }
    }

    private void ReleaseResponseCallback(IAsyncResult asynchronousResult)
    {
        HttpWebRequest responseRequest = (HttpWebRequest)asynchronousResult.AsyncState;
        string responseString = string.Empty;

        try
        {
            using (HttpWebResponse resp = (HttpWebResponse)responseRequest.EndGetResponse(asynchronousResult))
            {
                using (StreamReader streamRead = new StreamReader(resp.GetResponseStream()))
                {
                    responseString = streamRead.ReadToEnd();

                    try
                    {
                        JsonSerializerSettings settings = new JsonSerializerSettings();
                        List<CentralPointViewModel> _allCentralPointViewModel = JsonConvert.DeserializeObject<List<CentralPointViewModel>>(responseString, settings);
                    }
                    catch (JsonReaderException)
                    {
                        responseString = responseString.Replace('\"'.ToString(), string.Empty);
                        string[] responseArray = responseString.Split(';');
                    }
                    catch (JsonSerializationException)
                    {
                        responseString = responseString.Replace('\"'.ToString(), string.Empty);
                    }
                }
            }
        }
        catch (Exception ex)
        {
        }
    }
public void初始化(isScheduler调度程序)
{
如果(_isCloud)
{
HttpWebRequest request=(HttpWebRequest)WebRequest.Create(_cloudMappingServer+“/Mapping/GetAllCentralPoints”);
request.ContentType=“application/x-www-form-urlencoded”;
request.Method=“POST”;
BeginGetRequestStream(新的AsyncCallback(ReleaseReadCallback),request);
//指示线程等待,直到我们恢复它
_waitHandle.WaitOne();
_waitHandle.Dispose();
}
}
私有void ReleaseReadCallback(IAsyncResult asynchronousResult)
{
尝试
{
HttpWebRequest httpRequest=(HttpWebRequest)asynchronousResult.AsynchState;
使用(Stream postStream=httpRequest.EndGetRequestStream(asynchronousResult))
{
使用(MemoryStream memStream=new MemoryStream())
{
string queryString=string.Empty;
byte[]bytes=System.Text.Encoding.UTF8.GetBytes(queryString);
memStream.Write(字节,0,字节.长度);
memStream.Position=0;
byte[]tempBuffer=新字节[memStream.Length];
memStream.Read(tempBuffer,0,tempBuffer.Length);
Write(tempBuffer,0,tempBuffer.Length);
}
}
httpRequest.BeginGetResponse(新的异步回调(ReleaseResponseCallback),httpRequest);
}
捕获(例外情况除外)
{
var检验=ex;
}
}
私有无效释放响应回调(IAsyncResult asynchronousResult)
{
HttpWebRequest响应请求=(HttpWebRequest)asynchronousResult.AsynchState;
string responseString=string.Empty;
尝试
{
使用(HttpWebResponse resp=(HttpWebResponse)responseRequest.EndGetResponse(asynchronousResult))
{
使用(StreamReader streamRead=new StreamReader(resp.GetResponseStream())
{
responseString=streamRead.ReadToEnd();
尝试
{
JsonSerializerSettings设置=新建JsonSerializerSettings();
列表_allCentralPointViewModel=JsonConvert.DeserializeObject(responseString,设置);
}
捕获(JsonReaderException)
{
responseString=responseString.Replace(“\”.ToString(),string.Empty);
字符串[]responseArray=responseString.Split(“;”);
}
捕获(JsonSerializationException)
{
responseString=responseString.Replace(“\”.ToString(),string.Empty);
}
}
}
}
捕获(例外情况除外)
{
}
}

它从未进入ReleaseResponseCallback功能!我能够进行服务器呼叫,但响应从未到达我的手中,或者我没有正确地接收到响应。。如果您已经检查了方法ReleaseReadCallback中是否存在异常,我们将不胜感激。目前,您有一个空的捕获,可以容纳任何异常。@DonJayamanne我实际上输入了一个错误!它进入ReleaseReadCallback并执行良好,从不输入catch,然后正确地执行我的请求。我从未从我的请求中得到响应-它从未进入ReleaseResponseCallback