0
비동기 HttpWebRequest
에서 WebException
을 캐치하여 apap에서 비누를 읽으려고합니다. 그러나 그것은 AggregateException
을 던졌습니다. 비동기 HttpWebRequest
에 WebException
을 붙잡는 방법이 있습니까? 어떤 경우비동기 HttpWebRequest catch WebException
public async Task<XDocument> GetXmlSoapResponseAsync(string soapRequestURL, string xmlData)
{
try
{
//create xml doc
XmlDocument doc = new XmlDocument();
//load xml document frtom xmlData
doc.LoadXml(xmlData);
//creta web request
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(soapRequestURL);
req.ContentType = "text/xml";
req.Accept = "text/xml";
req.Method = "POST";
//GetRequestStream from req
Stream stm = req.GetRequestStream();
doc.Save(stm);
stm.Close();
Task<WebResponse> task = Task.Factory.FromAsync(
req.BeginGetResponse,
asyncResult => req.EndGetResponse(asyncResult),
(object)null);
var response = task.Result;
return await task.ContinueWith(t => ReadStreamFromResponse(response,stm, soapRequestURL,xmlData));
}
catch (WebException webException)
{
LogWebException(webException, soapRequestURL, xmlData);
return null;
}
}
감사와 내 코드를 최적화는() req.GetResponseAsync을 기다리고 ;. 나는이 비동기식 것에 익숙하지 않고 그것을 제대로 이해하기 위해서는 더 많이 읽어야한다. 정말 고맙습니다! – sanjeev
@sanjeev 문제 없습니다. 'BeginXX'와'EndXX' 메소드의 쌍은 [APM - 비동기 프로그래밍 모델] (http://msdn.microsoft.com/en-us/library/ms228963(v=vs.110).aspx)의 일부입니다.) .NET 4.5 이전에는 정말 유용했습니다. 요즘에는 async/await가 도입되어 대부분의 상황에서'XXAsync'를 사용하는 것이 좋습니다. – dcastro
감사합니다. dcastro! – sanjeev