【问题标题】:Role provider not working with SQL Server Enterprise角色提供程序不适用于 SQL Server Enterprise
【发布时间】:2014-02-23 04:37:01
【问题描述】:

我收到以下错误,

此版本的 SQL Server 不支持用户实例登录标志。连接将被关闭。

从我的剃刀视图中的以下代码行(MVC5)

@if(Roles.IsUserInRole("User"){}

我已将我的数据库 sql server 从 Express 2012 升级到 Enterprise 2012 edition 。之后我得到了上述错误。由于我的应用程序是 EF 代码优先的,因此会自动创建数据库,但角色提供程序似乎无法正常工作。

<add name="Foo" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Foo_db;User ID=sa;Password=******" providerName="System.Data.SqlClient" />

【问题讨论】:

  • 向我们展示连接字符串!该错误表明您在连接中使用User Instance=....,这是一个仅在 Express 中有效的功能。
  • 用户实例只支持快速版,所以我没有使用用户实例。但我可以先成功地从代码创建数据库。唯一的问题是基于角色的操作会引发上述错误。
  • 我已经将我的 sql server 版本从 express 升级到了企业版。我将实例名称保留为 EXPRESS。

标签: sql sql-server entity-framework asp.net-mvc-5 asp.net-identity


【解决方案1】:

查看此线程。它应该会有所帮助。

http://forums.asp.net/t/1939748.aspx

我已经对此进行了测试,User.IsInRole 现在正在为我工​​作。确保你的 Startup 类中有这个

【讨论】:

    【解决方案2】:

    您是否记得将应用程序名称放入您的网络配置中?

      <roleManager enabled="true">
       <providers>
          <clear />
            <add connectionStringName="ApplicationServices" 
                 name="AspNetSqlRoleProvider"       
                 type="System.Web.Security.SqlRoleProvider" 
                 applicationName="DONT FORGET THIS PART" />
        </providers>
    </roleManager>     
    

    【讨论】:

    • 那里有什么确切的名字?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 2023-03-06
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多