0

MVC2 からアップグレードされた MVC4 プロジェクトがあります。VS 開発サーバーでデバッグしている間、ユーザー検証は正常に機能します。しかし、ローカル IIS でデバッグしようとすると、パスワードが間違っているためにログインに失敗します。本番システムでは、ユーザー検証も正常に機能します。開発サーバー/運用システムとローカル IIS の唯一の違いは、Web サイトがローカル IIS の仮想ディレクトリで実行されていることです。したがって、URL は開発サーバー/本番環境に次のようなものがあります。

http://localhost:12345/ OR http://the.production.server/

しかし、ローカル IIS では次のようになります。

http://localhost/mymvcproject/

Web サイトをローカル IIS のルート ディレクトリに移動すると、ログインは正常に機能します。

web.config メンバーシップでは、次のように構成されます。

<membership>
      <providers>                
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" enablePasswordReset="true" passwordFormat="Encrypted" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="50" minRequiredPasswordLength="6" passwordAttemptWindow="10" applicationName="/" />
      </providers>
</membership>

問題は applicationName パラメータだと思いますが、変更していません。私がチェックしたこと:

  • データベースのデータは常に同じでした
  • 新しいユーザーを作成して検証するには、仮想ディレクトリにいるときにローカル IIS で作業します
  • 元のMVC2プロジェクトでもテストしましたが、同じ問題です

私は正しい道を進んでいますか?検証/パスワードの暗号化/復号化を URL/アプリケーション名から独立させる方法はありますか?

4

2 に答える 2

1

検証/パスワードの暗号化/復号化を URL/アプリケーション名から独立させる方法はありますか?

いいえ。代わりに、ASP.Net メンバーシップ プロバイダーは (salt に加えて) マシン キーを使用して、パスワードの暗号化と暗号化解除を行います。

通常、この種の飽和を避けるために、アプリケーションの web.config にマシン キーを明示的に含めます。

マシン キーがわかっている場合は、それをローカル IIS の web.config に明示的に保存します。

マシン キーがわからない場合は、次の方法で取得します。

http://aspnetresources.com/blog/how_to_read_auto_generated_machinekey

更新: 2013 年 7 月 9 日

マシン キーを明示的に割り当てない場合、アプリケーションはデフォルトで自動生成されたキーを使用します。

ここに画像の説明を入力

于 2013-07-08T19:51:39.620 に答える