8

サイトのページを切り替えると、ASP.NET_SessionId が失われます。この問題は、Chrome/Firefox/Safari で発生します。IE では発生しません。かなり奇妙です...これが私のシナリオです。

私のサイトには、ブラウザに www.example.org または example.org と入力することでアクセスできます (これは重要な情報です)。

example.orgに入ります。ホームページから自分のサイトにログインします (注: ASP.NET フォーム認証は使用していません)。デフォルトのユーザー ページ (userpage.aspx など) に移動します。このページから をクリックする<a>と、サイトの別のページに移動します。<a>リンクは完全修飾されています (例: http://www.example.org/page2.aspx )。新しいページに移動すると、セッションが失われます。

そこで、Fiddler を実行して問題を発見しようとしました。私が見つけたものは興味深いものでした。Request Header タグのRefererがページ間で失われていました。

手順は次のとおりです。

  1. example.org にアクセスします。
  2. example.org にログインします。
  3. userpage.aspx にリダイレクトされます。リファラーはhttp://example.orgです。ASP.NET_SessionId が設定されています。
  4. <a>(例: http://www.example.org/page2.aspx )をクリックします。ページがレンダリングされた後、ASP.NET_SessionId は失われます。

失われた ASP.NET_SessionId は、Chrome/Firefox/Safari で一貫して失われます。これは IE では発生しません。

example.org を www.example.org に置き換えて上記の手順を繰り返すと、ASP.NET_SessionId は失われません。毎回正しく動作します。

この動作について何か考えはありますか?

4

2 に答える 2

6

これを web.config の <system.web> 要素の下に追加します

<httpCookies ドメイン=".mysite.com" />

行動に変化があるかどうかを確認します。そもそも Cookie がルート ドメインに基づいていると思っていたのに、サブドメインが失敗しているように聞こえます。これにより、そのように強制されるはずです。

于 2012-04-04T14:17:18.353 に答える