C# 将Cookie访问到子域中

C# 将Cookie访问到子域中,c#,asp.net,C#,Asp.net,我想在一个域下托管多个站点。但目前我正在使用localhost,因此我在etc/hosts文件中添加了以下两行: 127.0.0.1 something.com 127.0.0.1 orders.something.com IIS中托管有2个应用程序。一个可以使用:orders.com/ordersso浏览,另一个可以使用something.com/SSOSample/浏览 我在something.com/SSOSample/中使用此代码创建了身份验证cookie: FormsAuthenti

我想在一个域下托管多个站点。但目前我正在使用localhost,因此我在etc/hosts文件中添加了以下两行:

127.0.0.1 something.com
127.0.0.1 orders.something.com
IIS中托管有2个应用程序。一个可以使用:
orders.com/ordersso
浏览,另一个可以使用
something.com/SSOSample/
浏览

我在
something.com/SSOSample/
中使用此代码创建了身份验证cookie:

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
                                                                "abc",
                                                                DateTime.Now,
                                                                DateTime.Now.AddMinutes(30), // value of time out property
                                                                true, // Value of IsPersistent property
                                                                String.Empty,
                                                                FormsAuthentication.FormsCookiePath);

                            string encryptedTicket = FormsAuthentication.Encrypt(ticket);
                            HttpCookie authCookie = new HttpCookie(
                        FormsAuthentication.FormsCookieName,
                        encryptedTicket);

                            Response.Cookies.Add(authCookie);
所以我登录了这个应用程序。但是,当我浏览orders.something.com/orderss时,我不会得到我的身份验证cookie

这是web.config中的“我的表单”部分:

<authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" enableCrossAppRedirects="true" timeout="2880" domain=".something.com" />
    </authentication>


我缺少什么?

看起来您的cookie doamin设置不正确

试着这样做:

authCookie.Domain = ".something.com"

请注意域名前面的“.”,这是something.com的任何子域都可以使用的原因。

看起来您的cookie doamin设置不正确

试着这样做:

authCookie.Domain = ".something.com"

请注意域名前面的“.”,这使它适用于something.com的任何子域。

您仍然需要authCookie.domain=“.something.com”,因为您正在手动设置cookie。当ASP.NET自动延长cookie过期时间时,将使用您的web.config域属性。您仍然需要authCookie.domain=“.something.com”,因为您正在手动设置cookie。当ASP.NET自动延长cookie过期时间时,将使用web.config域属性。