【发布时间】:2017-05-31 15:59:21
【问题描述】:
我无法读取我在服务器上设置的客户端上的 cookie。
我正在使用 C#/MVC 并在控制器之外处理 cookie 逻辑。
我传入了响应,并且在我从控制器调用此方法后可以看到它已设置,但是一旦响应发送到客户端,此 cookie 不存在。
在控制器中,我这样调用 SetCookie 方法:
CookieHelper.SetCookie(Response);
我也尝试过传入System.Web.HttpContext.Current.Response,但无济于事。
我调用的方法是:
public class CookieHelper {
public static void SetCookie(HttpResponseBase Response)
{
HttpCookie cookie = new HttpCookie("jayscookie");
cookie.Value = "a much longer string than this";
cookie.Expires = DateTime.Now.AddDays(7);
Response.Cookies.Add(cookie);
}
}
我也试过HttpResponseWrapper。
我也试过System.Net.Cookie而不是HttpCookie
我的 IIS 会话状态设置由 Web.Config 中的这一行表示:
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false"/>
我试过没有cookieless="false"
IIS 中此应用程序的 Cookie 设置部分是:
模式:UseCookies
姓名:ASP.NET_SessionId
超时:20(分钟)
我访问了以下并尝试了解决方案:
Why is my cookie not set?
Cookies not getting set in c#
Why are the cookies not being set when doing a Redirect?
Cookie not setting in asp.net mvc
How to set cookie value?
HttpWebRequest/Reponse return cookies sent
以及几个微软文档页面,例如:
https://msdn.microsoft.com/en-us/library/ms178194.aspx
有什么我遗漏的,或者我显然没有考虑到的任何基本概念吗?在客户端设置 cookie 可以正常工作,只是不在服务器上设置。
【问题讨论】:
-
在响应中发送到浏览器的cookies对吗?但是当它们被发回给您时,在下一个请求中,它们会在请求中找到。
-
你在做重定向吗?这是 cookie “消失”时的常见情况。
-
@Tasos K.,我没有做重定向。
-
@JesseMoreland,它们没有被发回,因此不在请求中。 (这就是我发现这一切发生的原因。)
-
StateServer是否配置在127.0.0.1:42424并且 ASP.NET 状态service是否正在运行?您是否尝试过InProc(默认)首先调试它是代码级别还是配置?
标签: c# asp.net asp.net-mvc cookies