我已经搜索了一段时间,但无法找到解决方案。
我目前正在开发一个 Windows Phone 应用程序(针对 7.1)。为了与 Internet 通信,我使用了 NuGet 包:Microsoft.Net.Http
以下代码用于与网络服务器通信:
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)。
现在有一个很大的不同。我设置了一些断点来查看变量:
在 Windows 手机上:
? container
{System.Net.CookieContainer}
Capacity: 300
Count: 0
MaxCookieSize: 4096
PerDomainCapacity: 20
在我的控制台应用程序中:
? container
{System.Net.CookieContainer}
Capacity: 300
Count: 3
MaxCookieSize: 4096
PerDomainCapacity: 20
我真的不知道那里发生了什么......有人说可能是Cookies被标记为安全。我已经检查过了,但事实并非如此。由于代码在 CLI 应用程序上工作的事实确保我到目前为止正确完成了请求。
有没有人有更多关于那里发生的事情的信息?