您從外部網站收到的來自WebResponse
的Cookie無法傳遞到您自己的客戶端瀏覽器。這是因爲Cookie模型固有的安全限制:瀏覽器不支持讓一個域爲其他域設置Cookie。
由於您剛從您剛剛添加Cookie的HttpCookieCollection
中讀取數據,因此這可能似乎在當前請求結束時才起作用。這個集合將持續到當前的HTTP請求結束。
但是,說實話,我不知道你是如何能夠走到這一步,因爲在所有的的System.Net.HttpWebResponse
和CookieContainer
使用System.Net.Cookie
,而Response.Cookies
集合使用System.Web.HttpCookie
。
無論如何,您最好的選擇可能是將您在WebResponse
中獲得的cookie值存儲到您發送給瀏覽器的cookie中。然後,根據將來的請求,閱讀您自己的Cookie,爲外部網站構建新的Cookie
,然後手動將其添加到CookieContainer
。
下面是一些僞代碼,假設外部網站正在尋找該cookie將被命名爲「sessionKey」我們用「的myCookie」爲姓,我們發送給客戶的瀏覽器中的cookie:
public ActionResult MyAction()
{
var container = new CookieContainer();
if (Request.Cookies["myCookie"] != null)
{
// browser has passed in "myCookie".
// use this to create the "sessionKey" cookie to send.
var cookie = new System.Net.Cookie("sessionKey",
Request.Cookies["myCookie"].Value, "/", "external-site.com");
container.Add(cookie);
}
HttpWebRequest request;
HttpWebResponse response;
// initialize the request.
// ...
// make sure we're using our cookie container.
request.CookieContainer = container;
// execute the request and get the response.
response = request.GetResponse();
// send a cookie, "myCookie", to the browser.
// it will contain the value of the "sessionKey" cookie.
Response.Cookies["myCookie"].Value = response.Cookies["sessionKey"].Value;
}
有一個看看這個答案,它可能會幫助http://stackoverflow.com/questions/4212713/grabbing-cookies-in-web-browser-control-wp7 – Art 2012-06-18 00:29:27