なぜ私のカスタムメンバーシップとロールプロバイダーがローカルで動作するのに、展開後に失敗するのですか?
-
25-10-2019 - |
質問
ASP.NET MVC 4に組み込まれた認証と承認を活用するために、カスタムメンバーシップおよびロールプロバイダーを作成しました。アプリケーションの開発中に、テスト環境に展開しようとするまで、すべてがスムーズに進行していました。
Visual Studioからデバッグモードでアプリケーションを起動すると、完全に正常に機能します。ただし、Visual Studioのワンクリック展開を使用して、アプリケーションを開発マシンで実行しているIISのインスタンスにアプリケーションをロードします。ブラウザにアプリケーションをロードすることができますが、認証は機能しなくなりました。 Fiddlerを使用して、Cookieが送り返されることがわかりますが、[Authorize]属性を使用して制限されているサイトの一部にアクセスできません。
以下は、私のweb.configからの関連するスニペットです。
<membership defaultProvider="PonosMembershipProvider">
<providers>
<clear />
<add name="PonosMembershipProvider" type="Ponos.Identity.PonosMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/Ponos" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
<providers>
<clear />
<add name="DefaultRoleProvider" type="Ponos.Identity.PonosRoleProvider" connectionStringName="DefaultConnection" applicationName="/Ponos" />
</providers>
</roleManager>
さらに、次のようにロジックを使用して、両方のカスタムプロバイダーにアプリケーション名を設定します。
public override string ApplicationName
{
get
{
return "Ponos";
}
set
{
throw new NotImplementedException();
}
}
さらに、IISの実行中のインスタンスに添付した後、フォームに入力された情報が検証に合格しますが、許可されたアクセスが制限されているページへのアクセスは許可されていないことがわかります。
また、展開に使用されるデータベースには、開発データベースと同じ値が入力されます。
プロバイダーがデバッグ環境で正常に機能しているのに、プロバイダーが展開後に機能しないのはなぜですか?
解決 2
この問題は、展開されたサーバーがIPによって直接アクセスされたときにのみ表示されました。ドメインをIPにマッピングするホストを追加し、その後、AUTH Cookieで同じドメインを設定すると、問題が解決されました。
ドメインがIPアドレスである場合、なぜCookieにアクセスできなかったのかわかりませんが、これにより問題が解決しました。
他のヒント
「フォームに入力された情報は検証に合格しますが、許可されたアクセスが制限されているページへのアクセスは許可されていません。」
権限の問題のようです!