奇妙なことに、コードベースでまさにこの問題に遭遇しました。私の開発者の 1 人は、「古い」ロール プロバイダを使用して、ユーザーが特定のロールに属しているかどうかを確認していました。これにより、アプリは、まだ存在するすべての構成として App_Data にデータベースを作成していましたmachine.config
。接続文字列とプロバイダーの詳細は で指定されてmachine.config
いるため、web.config
追加または削除するだけです。たとえば、次のようにmachine.config
言う場合:
<connectionStrings>
<add name="LocalSqlServer" connectionString="..."/>
</connectionStrings>
そして、あなたweb.config
はこれを持っています:
<connectionStrings>
<add name="MyConnectionString" connectionString="..."/>
</connectionStrings>
アプリケーションは、両方の文字列を表示して使用できるようになります。これを修正するには、次のように接続文字列を最初にクリアします。
<connectionStrings>
<clear />
<add name="MyConnectionString" connectionString="..."/>
</connectionStrings>
ただし、古いロール (またはプロファイル) プロバイダーがコードで使用されているという根本的な問題は依然として残っています。そのため、使用すると多くのエラーが発生します。次のようにコードを切り替える必要があります。
if (User.IsInRole("Admin"))
{
//Do admin stuff
}
このようなものに(私の場合_userManager
はタイプ UserManager<User>
であり、実行時にコントローラーコンストラクターに注入されます。
var user = _userManager.FindById(User.Identity.GetUserId());
if (_userManager.IsInRole(user.Id, "Admin"))
{
//Do admin stuff
}