1

次の設定があります:http: //www.example.com/dir1/および http://www.example.com/dir2/

各仮想ディレクトリは、IIS6.0で独自のAppPoolを備えたアプリケーションとして構成されます。

response.redirectを使用して認証済みユーザーをdir1からdir2にリダイレクトすると、ユーザーの認証情報が失われ、ユーザーはログインページにリダイレクトされます。この問題は、各アプリ(dir1およびdir2)がサブドメイン(例:http: //dir1.example.comおよびhttp://dir2.example.com)で構成されている場合には発生しませんでした 。

machine.configファイルにマシンキーを追加することで問題を解決しました。

http://www.example.com/dir1構成で機能しない理由を誰かに説明してもらえますか?

4

2 に答える 2

2

私は定期的にこの方法でアプリケーションを構成します。あなたが迷うことができるいくつかの場所があります。

  1. 各web.configには、共通のmachineKeyセクションの正確な複製が必要です。EGは1つのセクションを生成し、FormsTicketsを共有するすべてのweb.configsに貼り付けます。

  2. 各MembershipProvider(およびロール/プロファイルなど)要素は、同じapplicationName属性を共有する必要があります。デフォルトではこれは「/」であるため、手動で変更しない限り、問題はありません。

  3. すべてのアプリケーションのすべてのプロバイダーは、共通のaspnetdbインスタンスへの共通の接続文字列を共有する必要があります。

  4. これらの手順のいずれかを個別にまたは段階的に試した場合は、DBが一貫性のない状態になっている可能性があります。これらの各要件が満たされていることを確認し、新しいデータベースから始めてください。

これらの手順に従うと、問題は発生しません。これはかなり一般的で単純なユースケースです。

他にご不明な点がありましたらお知らせください。

于 2010-05-05T16:46:08.683 に答える
1

ASPはわかりませんが、使用しているセッションCookieのパスを指定していないと思われるため、パス設定はデフォルトでCookieが設定されているパス/dir1/dir2にそれぞれ設定されます。

サブドメインを使用する場合は、おそらくexample.comメインのCookieドメインとして使用しているため、両方のサブドメインにアクセスできました=問題ありません。

ブラウザでセッションCookieを調べることでこれを見つけることができるはずです(たとえば、FirefoxのWeb開発者ツールバーの[Cookie]タブで)。

私が正しければ/、セッションCookieのパスをどこかに指定する必要があります。

どの時点でそれを微調整するかはわかりませんが、おそらくそれはあなたを正しい方向に向けます。

于 2010-05-03T17:32:25.843 に答える