【问题标题】:ODD ERROR: System.Web.Security.SqlRoleProvider' requires a database schema compatible with schema version '1'奇数错误:System.Web.Security.SqlRoleProvider' 需要与模式版本“1”兼容的数据库模式
【发布时间】:2011-10-10 10:14:20
【问题描述】:

我使用 asp.net 4 c# entity framework 4 和 asp.net 成员资格。

我通常使用 VS2010 CASSINI 来测试我的 Web 应用程序。现在我必须将我的 Web 应用程序移动到本地的 IIS 7。

我的应用在 Cassini 上运行良好,现在在 IIS 7 上,当一些脚本尝试访问 asp.net 成员表时,我收到此错误:

System.Web.Security.SqlRoleProvider' requires a database schema compatible with schema version '1'. However, the current database schema is not compatible with this version. You may need to either install a compatible schema with aspnet_reqsql.exe (available in the framework installation directory), or upgrade the provider to a newer version. Alright, my database was exactly the same and everything looked fine.

我绑定了回收池和网站,但问题仍然存在。

你有什么想法吗?非常感谢您抽出宝贵的时间。

更新:

我在生成数据库的 SQL 脚本中发现了这一行……​​可以连接吗?:

xp_cmdshell 'c:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe -E -S localhost -A mr -Q -d SiteNameExtension' -- mr = install Membership, Role Manager

【问题讨论】:

  • 听起来您在 ASP.NET 成员表中缺少数据。

标签: asp.net sql-server-2008 asp.net-membership


【解决方案1】:

我的 sql 安装脚本中的这一行造成了问题:

xp_cmdshell 'c:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe -E -S localhost -A mr -Q -d SiteNameExtension' -- mr = install Membership, Role Manager

事实上,aspnet_regsql.exe 并没有像我的 Web.Configure 中那样针对框架版本(它是 4)。

更新 xp_cmdshell o 正确的框架版本我解决了问题

【讨论】:

    【解决方案2】:

    尝试使用正确版本的 System.Web.Security.SqlRoleProvider 更新 Web 配置文件

    您可以在 c:/windows/microsoft.net/framework/v4.0.30319 或任何其他版本中找到以下配置,在那里您可以找到配置文件。在其中检查机器配置文件 获取版本和公钥。

    对于 .net 框架 4.0

         <roleManager enabled="true" defaultProvider="SqlProvider">
         <providers>
            <clear/>
            <add name="SqlProvider" connectionStringName="rolesDB" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
         </providers>
      </roleManager>
    

    适用于 .net 框架 2.0

        <roleManager enabled="true" defaultProvider="SqlProvider">
         <providers>
            <clear/>
            <add name="SqlProvider" connectionStringName="rolesDB" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
         </providers>
      </roleManager>
    

    【讨论】:

      猜你喜欢
      • 2011-03-18
      • 2016-12-03
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多