【问题标题】:ASP.NET IDENTITY WEB FORMSASP.NET 身份 Web 表单
【发布时间】:2014-07-20 20:01:04
【问题描述】:

好的。我在 web 表单中遇到了一些非常奇怪的 asp.net 身份。我设置了 web.config 文件以建立与本地 sqlexpress 服务器的连接。我之前创建了一个数据库并运行了使用 asp.net 身份和 4.5 .net 框架的 Web 应用程序。第一次运行 Web 应用程序时,表是在 sql server 数据库中自动为我创建的,但后来我注意到在解决方案下的 APP_DATA 文件夹中创建了另一个名为 aspnetdb.mdf 的数据库

虽然我已经指出连接字符串出于某种原因连接到 sql 服务器,但 Web 应用程序连接到位于 APP_DATA 中的新创建的 localdb 数据库。

我在这里做错了吗?

谢谢

【问题讨论】:

  • 你能提供你的web.config的相关部分吗?那里有多个连接字符串吗?代码从哪里获取连接字符串?
  • 嗨大卫,我只有连接到 sqlexpress 实例的默认连接。这是web.config,连接字符串>

标签: asp.net asp.net-mvc-4 webforms asp.net-identity-2


【解决方案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>

您的应用程序将能够查看和使用 both 字符串。要修复它,您可以先清除连接字符串,如下所示:

<connectionStrings>
    <clear />
    <add name="MyConnectionString" connectionString="..."/>
</connectionStrings>

但这仍然留下了代码中使用旧角色(或配置文件)提供者的潜在问题。所以你在使用它时会遇到很多错误。你需要像这样切换代码:

if (User.IsInRole("Admin"))
{
    //Do admin stuff
}

类似这样的事情(在我的例子中,_userManager 的类型是 UserManager&lt;User&gt;,并在运行时注入到我的控制器构造函数中。

var user = _userManager.FindById(User.Identity.GetUserId());

if (_userManager.IsInRole(user.Id, "Admin"))
{
        //Do admin stuff
}

【讨论】:

    猜你喜欢
    • 2014-03-19
    • 2013-09-28
    • 2020-05-06
    • 2017-09-28
    • 1970-01-01
    • 2017-10-22
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多