奇怪的是,我刚刚在我们的代码库中遇到了这个问题。我的一位开发人员正在使用“旧”角色提供程序来检查用户是否处于特定角色。这导致应用程序在 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
}