私はしばらくの間検索しましたが、解決策を見つけることができませんでした。
現在、Windows Phone アプリ (7.1 を対象) を開発しています。インターネットと通信するために、NuGet-Package: Microsoft.Net.Httpを使用しています。
次のコードは、Web サーバーとの通信に使用されます。
CookieContainer container = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler();
handler.UseCookies = true;
handler.CookieContainer = container;
HttpClient client = new HttpClient(handler);
Uri myUri = new Uri("http://my-server/ajax/login?action=login&name=user&password=passwd");
var task = client.GetStringAsync(myUri);
task.Wait();
String result = task.Result;
この GET リクエストの結果は予想どおりです。サーバー側も確認しました。ログイン プロセスが成功し、有効な JSESSIONID がクライアントに返されました。
私の問題を確認するために、上記とまったく同じコードを使用して単純なコンソール アプリケーションを作成しました (WP ソリューションから CL ソリューション (および上記の対応する NuGetPackage) にコピー & ペースト)。
大きな違いが 1 つあります。変数を表示するためにいくつかのブレークポイントを設定しました。
Windows Phone の場合:
? container
{System.Net.CookieContainer}
Capacity: 300
Count: 0
MaxCookieSize: 4096
PerDomainCapacity: 20
そして私のコンソールアプリケーションでは:
? container
{System.Net.CookieContainer}
Capacity: 300
Count: 3
MaxCookieSize: 4096
PerDomainCapacity: 20
そこで何が起こっているのか本当にわかりません... Cookieが安全であるとマークされている可能性があると誰かが言いました。私はこれをチェックしましたが、そうではありません。コードが CLI アプリケーションで機能するという事実により、これまでのところ要求が正しく行われていることが保証されます。
そこで何が起こっているのかについて、誰かもっと情報がありますか?