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

これは本当に愚かです!サーバー時間は1年前に設定されており、修正するとすべてが機能し始めます

于 2012-11-08T05:29:25.153 に答える