我有一个找不到任何解决方案的问题,而且我很难相信我是唯一遇到此错误的人。
我在可移植类库中有这段 C# 代码
static public void GetAnimeListFromWeb(ObservableCollection<AnimeViewModel> collection, string Url, string encodedLogin = "")
{
WebRequest request = WebRequest.Create(Url);
request.Headers["Authorization"] = encodedLogin;
IAsyncResult asyncResult = request.BeginGetResponse(new AsyncCallback( s => {
WebResponse response = (s.AsyncState as WebRequest).EndGetResponse(s);
XDocument doc = XDocument.Load(response.GetResponseStream());
IEnumerable<AnimeViewModel> result = ParseAnimeXML(doc);
collection = (ObservableCollection<AnimeViewModel>)result;
}), request);
}
当我编译它时,它会构建,并且代码也可以在我编写的用于测试它的小型控制台程序中运行。但是,在 Windows Phone 8 应用程序中进行测试时,它会崩溃
WebResponse response = (s.AsyncState as WebRequest).EndGetResponse(s);
它抛出一个 ArgumentException。当我检查 's' 变量时,它说 AsyncWaitHandle 给出了 NotSupportedException。
那么我的问题是,我怎样才能做出适用于所有平台的适当 Webrequest?
编辑:也许有必要注意我的目标是 .NET 4.5、SL4 及更高版本、WP7 及更高版本以及适用于 Windows 商店应用程序的 .NET