FormsAuthenticationTicket为null

时间:2012-04-06 08:00:39

标签: c# asp.net .net

使用Framework 4.0

情景1:
使用Live.com签名。
在Live.com FormsAuthenticationTicket不是null& ticket.name是我的UserID 在Local.com中,FormsAuthenticationTicket为空。
我不知道这里缺少什么。

情景2:
使用Local.com签名。
在Local.com中,FormsAuthenticationTicket不是null& ticket.name是我的UserID 在Live.com FormsAuthenticationTicket中为空。

我的机器配置设置在Local&直播网站
目标框架是4.0

ApplicationAuthenticate_request如下:

HttpCookie AuthCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket ticket = null;
if (AuthCookie != null)
{
    try
    {
        ticket = FormsAuthentication.Decrypt(AuthCookie.Value);
        if (ticket != null && ticket.Name != null)
            Response.Write(ticket.Name);
    }
    catch (Exception ex11)
    {
        string sErr = ex11.Message + ex11.StackTrace;
    }
}

登录代码在

下面
authenticationTicket = new FormsAuthenticationTicket(UserId, mPersistant, 30);
//FormsAuthenticationTicket authenticationTicketV1 = new FormsAuthenticationTicket(1, userGuid,DateTime.Now, DateTime.Now.AddMinutes(30), lPersistant, "User");
string authEncrypt = FormsAuthentication.Encrypt(authenticationTicket);
FormsAuthenticationTicket authTickChk = FormsAuthentication.Decrypt(authEncrypt);
bool bChk = authTickChk.Name.Equals(authenticationTicket.Name);
// Create form identity from FormsAuthenticationTicket.
id = new FormsIdentity(authenticationTicket);
// Set the Context User
HttpContext.Current.User = this;

1 个答案:

答案 0 :(得分:1)

通过machine.config你的意思是web.config?如果您的web.config文件不同,这可能是问题

<authentication mode="Forms">
  <forms loginUrl="member_login.aspx"
  cookieless="UseCookies"
  domain="contoso.com" />
</authentication>

您的浏览器只会将FormsAuth cookie提交到web.config文件中指定的域,也许您在每个环境中将其设置为不同的域?