Asp.net mvc 不同开发计算机上的ASP.NET成员资格提供程序

Asp.net mvc 不同开发计算机上的ASP.NET成员资格提供程序,asp.net-mvc,asp.net-membership,Asp.net Mvc,Asp.net Membership,“asp.net成员资格提供程序”是否可移植?我是否必须运行aspnet_regsql.exe才能为每台新机器设置它 我将成员资格提供程序数据库导入VisualStudioDatabaseEdition,并签入源代码管理,然后将其重新部署到另一台开发人员计算机。从新机器上,我得到了以下错误。我该如何解决这个问题?谢谢 'System.Web.Security.SqlMembershipProvider' 需要兼容的数据库架构 架构版本为“1”。但是, 当前数据库架构不可用 与此版本兼容。你可以

“asp.net成员资格提供程序”是否可移植?我是否必须运行aspnet_regsql.exe才能为每台新机器设置它

我将成员资格提供程序数据库导入VisualStudioDatabaseEdition,并签入源代码管理,然后将其重新部署到另一台开发人员计算机。从新机器上,我得到了以下错误。我该如何解决这个问题?谢谢

'System.Web.Security.SqlMembershipProvider' 需要兼容的数据库架构 架构版本为“1”。但是, 当前数据库架构不可用 与此版本兼容。你可以 需要安装兼容的 带有aspnet_regsql.exe的架构 (在框架中提供) 安装目录),或升级 将提供程序添加到新版本

只要您在新的开发环境中拥有Framework2.0或更高版本,并且可以访问包含该模式的数据库,它就是“可移植的”

aspnet_regsql.exe应用程序仅用于生成db架构。当指定提供者时,真正的交易发生在web.config中

只要在连接字符串或包含成员资格提供程序架构的DB中有.mdf文件引用,一切都会正常工作

连接字符串:

<connectionStrings>
        <add name="LocalSQL" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=YourCatalog;Persist Security Info=True;User=sa;Password=password" providerName="System.Data.SqlClient"/>        
    </connectionStrings>

会员资格提供者:

<membership defaultProvider="DefaultProvider" userIsOnlineTimeWindow="30">
            <providers>
                <clear/>
                <add name="DefaultProvider" connectionStringName="LocalSQL" applicationName="DefaultApp" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="true" passwordFormat="Encrypted" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </providers>
        </membership>

每个数据库都需要SQL成员资格提供程序。提供者注册过程在数据库中创建某些表。如果没有这些表,您将得到上面的错误

由于这些表是在数据库中创建的,因此您可以拥有想要共享单个SQL数据库的任意多个不同的应用程序或开发机器

但是,如果您需要另一个提供程序实例,因为您有一个不同的应用程序或需要与另一个SQL数据库通信,那么您需要再次注册(创建表)。另一种可能是使用SQL复制将表从一个数据库复制到另一个数据库


您的应用程序可能需要修改web.config文件,以确保它与现有SQL数据库的连接字符串正确。

我也遇到了这个问题。对我来说,我必须明确地给我的应用程序命名(在我的开发机器上是“/”

web.config:

<membership>
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" applicationName="jobs"... />
  </providers>
</membership>
<profile>
  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" applicationName="jobs" ... />
  </providers>
</profile>
<roleManager enabled="true">
  <providers>
    <clear />
    <add connectionStringName="ApplicationServices" applicationName="jobs" ... />
    <add applicationName="jobs" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>
INSERT INTO [dbo].[aspnet_Applications]([ApplicationName], [LoweredApplicationName], [ApplicationId], [Description]) SELECT N'jobs', N'jobs', N'74b045ce-9c16-4e6a-b1ec-08504600a627', NULL