ASP.net表单身份验证cookie丢失

时间:2012-11-08 05:24:39

标签: asp.net authentication cookies

背景:我使用javascript与我的WCF服务进行通信。该服务的会话采用asp兼容模式。我调用/publicService.svc/ajax/logon进行登录,并尝试通过ajax检索/User/Home.aspx。

问题:在本地开发机器(win7)和我的测试服务器(2003 + IIS6 + .net4)上,它没有问题。但是在生产服务器上,登录请求将成功,但身份验证将不起作用。

web.config:

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login.aspx" timeout="2880" name="party"  />
</authentication>

一些发现:如果我访问生产服务器,我发现缺少身份验证cookie。

在正常工作的服务器上:

logon: 
   Request Cookies: ASP.NET_SessionId: xxxxx
   Response Cookies: party: xxxxx
Home.aspx:
   Request Cookies: ASP.NET_SessionId: xxxxx
                    party: xxxxx

到目前为止一直很好,但是在有问题的服务器上:

logon: 
   Request Cookies: ASP.NET_SessionId: xxxxx
   Response Cookies: party: xxxxx
Home.aspx:
   Request Cookies: ASP.NET_SessionId: xxxxx

此处缺少身份验证Cookie。因此,身份验证无效。

可能的原因是什么?所有请求都在同一个域下,因此这里没有跨域问题

2 个答案:

答案 0 :(得分:0)

这真是太蠢了! 服务器时间配置为一年前,当我更正它时,一切都开始工作

答案 1 :(得分:0)

尝试添加:

ticketCompatibilityMode="Framework40"

使其成为

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login.aspx" timeout="2880" name="party"  
    ticketCompatibilityMode="Framework40"/>
</authentication>

根据msdn “一个值,指示是否使用协调世界时(UTC)或本地时间作为故障单到期日期。”