0

背景:我正在使用 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。因此身份验证不起作用。

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

4

2 回答 2

0

尝试添加这个:

ticketCompatibilityMode="Framework40"

让它

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

根据 msdn “指示是否使用协调世界时 (UTC) 或本地时间作为票证到期日期的值。”

于 2012-11-08T05:46:43.573 回答
0

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

于 2012-11-08T05:29:25.153 回答