解決策が見つからない問題があり、このエラーが発生したのは私だけだとは信じがたいです。
ポータブル クラス ライブラリにこの 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 をターゲットにしていることに注意してください。