我有经典之作:
WebClient webClient = new WebClient();
webClient.Headers[HttpRequestHeader.ContentType] = "application/xml";
webClient.UploadStringAsync(new Uri(inputMessage.Namespace, UriKind.Absolute), inputMessage.ToXML());
webClient.UploadStringCompleted += new UploadStringCompletedEventHandler(ProcessResponse)
但我想将请求的超时设置为更低的值。 我的谷歌搜索指示我使用HttpWebRequest,但我喜欢WebClient API。我最终扩展了WebClient并覆盖了一个可以创建底层HttpWebRequest的受保护方法:
protected override WebRequest GetWebRequest(Uri uri) {
HttpWebRequest result = WebRequest.CreateHttp(uri);
result.Timeout = someTimeOut;
return result;
}
问题出在WP7中,HttpWebRequest没有设置Timeout的属性,这只是普通的.NET。
所有想法?
答案 0 :(得分:1)
有一个如何在http://forums.silverlight.net/forums/p/80504/423951.aspx
实现自己的超时的示例没有内置方法可以暂停。
答案 1 :(得分:1)
使用Microsoft HTTP Client Libraries而不是Silverlight的内置选项。
答案 2 :(得分:-2)
这是设计的。 WebClient没有超时属性。它只是WebRequest的包装类... IMO它只是拳击。关于WebClient的一个好处是它使用事件而不是AsynCallbacks ......最后两个类都使用BrowserHttpWebRequest。您可以使用HttpWebRequest并避免扩展...就像您一样。