我应该给这个cookie什么域名?

我正在尝试使用sessionID从ac#应用程序调用Web服务。
为此,我需要在cookie中设置“Domain”标头。

在Fiddler中它看起来像 – “ASP.NET_SessionId = izdtd4tbzczsa3nlt5ujrbf5”(cookie中没有指定域)。

Web服务位于 – “http:// [some ip goes here]:8989 / MyAPI.asmx”。

我试过了:
http:// [ip],
http:// [ip]:8989,
HTTP:// [IP]:8989 / MyAPI.asmx

所有这些都会导致运行时错误。

我也尝试了单独的ip (即100.10.10.10),它不会导致运行时错误,并设置cookie,但是当我调用web方法时,cookie永远不会被发送。

这是我设置域名的代码:

if (!string.IsNullOrEmpty(currentSessionID)) { req.CookieContainer=new CookieContainer(); Cookie cookie = new Cookie("ASP.NET_SessionId", currentSessionID); cookie.Domain = GetCookieUrl(); //<- What should this be? req.CookieContainer.Add(cookie); } 

那么这个域应该是什么?

谢谢。

我相信它应该只是[ip]。 删除您尝试过的http://部分内容。

根据MSDN上的这个页面 ,你的代码应该是

 cookie.Domain = "100.10.10.10"; 

接下来,你到底发生了什么错误? 另外,您是否将Compile错误与运行时错误混淆? 我发现很难相信你得到一个编译错误,因为Domain是一个String属性,这意味着你可以放入任何东西。

最后,为什么要向网络服务发送cookie? 通常的方法是传递表单post或查询字符串中的所有内容。


更新

顺便说一句,如果你绝对必须在标题中添加一个cookie以便将它传递给web服务,你这样做的方式是(取自这里 ):

 byte[] buffer = Encoding.ASCII.GetBytes("fareId=123456"); //the data you want to send to the web service HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url); WebReq.Method = "POST"; WebReq.ContentType = "application/x-www-form-urlencoded"; WebReq.ContentLength = buffer.Length; WebReq.Headers["Cookie"] = "ASP.NET_SessionId=izdtd4tbzczsa3nlt5ujrbf5" Stream PostData = WebReq.GetRequestStream(); 

请注意,这会将标头与请求内联设置,而不实例化“cookie”对象。 Cookie的Domain属性有助于确保cookie仅发送到列出的域。 但是,如果您正在启动请求并尝试向其附加cookie,那么最好的方法是将其作为字符串添加到请求标头中。

没有发送cookie的原因是请求的内容长度应该添加cookie 之后设置,而不是之前。
域名是ip。

 // Simple function to get cookie domain private string GetCookieDomain(string uri) { Uri req_uri = new Uri(uri); return req_uri.GetComponents(UriComponents.Host, UriFormat.Unescaped); }