ASP.NET会话Cookie - 指定基本域

Jas*_*ter 19 asp.net cookies session

默认情况下,ASP.NET将其cookie设置为使用"mydomain.com"作为其基础.我宁愿让他们使用"www.mydomain.com"代替,这样我就可以拥有其他不含cookie的"sub.mydomain.com"子域名.

我已经完成了对Session和Cookie对象的一些挖掘,虽然我可以找到如何为单个cookie设置域,但我没有看到为所有Session cookie设置它的方法.

有人的想法吗?

Lac*_*che 23

创建一个ISessionIDManager,因为您只想更改cookie域,我们将让默认域执行所有工作.

这是在sessionState元素下的web.config中配置的<system.web>.

<sessionState sessionIDManagerType="MySessionIDManager" />
Run Code Online (Sandbox Code Playgroud)

并实施.

public class MySessionIDManager: SessionIDManager, ISessionIDManager
{   
    void ISessionIDManager.SaveSessionID( HttpContext context, string id, out bool redirected, out bool cookieAdded )
    {
        base.SaveSessionID( context, id, out redirected, out cookieAdded );

        if (cookieAdded) {
            var name = "ASP.NET_SessionId";
            var cookie = context.Response.Cookies[ name ];
            cookie.Domain = "example.com";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


OJ.*_*OJ. 13

我意识到这是一个老问题,但你可以使用httpCookies配置部分的domain属性而不是在代码中执行此操作吗?

<httpCookies domain="String" 
             httpOnlyCookies="true|false" 
             requireSSL="true|false" />
Run Code Online (Sandbox Code Playgroud)

  • 测试.Net 4,4.5,4.6.1 - 为我工作,一个比接受的答案简单得多的解决方案. (4认同)
  • 似乎对会话cookie没有影响 (2认同)