Dan*_*rez 5 c# asp.net cookies
我试图做一些简单的东西,我已经看了通过网络的例子,我不知道是什么,我做错了这是我正在做测试某些功能的单元测试,后来会由一些不同的设备执行
基本上我正在创建一个webrequest到我的网站,它返回一组cookie,我们稍后需要
然后我想创建一个新的webrequest,使用从第一个响应返回的cookie,但当我在阅读该信息时,cookie是空的
var request = (HttpWebRequest)WebRequest.Create("http://localhost/bla");
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "GET";
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(originalResponse.Cookies); // originalResponse.Cookies has several cookies needed by "bla"
var response = request.GetResponse();
Run Code Online (Sandbox Code Playgroud)
在另一个地方......(在"bla"里面)
HttpContext.Current.Request.Cookies // this is empty
Run Code Online (Sandbox Code Playgroud)
Dan*_*rez 11
好的,发现发生了什么问题是我们不能只设置cookiecontainer从响应中获取cookie,因为这是一个新的请求我们需要设置cookie所属的域(.net不假设域是Request对象中的URI之一
所以,在设置cookie时我们需要做这样的事情:
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(new Uri("http://localhost"), originalResponse.Cookies);
Run Code Online (Sandbox Code Playgroud)
正如另一个注释,我在设置cookie时遇到了路径问题.得到错误,例如"'路径'=/MyApp部分的cookie无效".我通过在添加cookie之前将cookie的路径设置为空来解决这个问题(并使它们在整个域中有效)
for (int i = 0; i < originalResponse.Cookies.Count; i++)
{
originalResponse.Cookies[i].Path = String.Empty;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12712 次 |
| 最近记录: |