Поставщик членства ASP.NET на другом компьютере для разработки

Является ли «поставщик членства asp.net» переносимым? Нужно ли запускать aspnet_regsql.exe, чтобы настроить его для каждой новой машины?

Я импортировал базу данных поставщика членства в Visual Studio Database Edition, зарегистрировал ее в своей системе управления версиями и повторно развернул ее на другом компьютере разработчика. С новой машины я получил следующую ошибку. Как я могу это исправить? Спасибо!

Для «System.Web.Security.SqlMembershipProvider» требуется схема базы данных, совместимая со схемой версии «1». Однако текущая схема базы данных несовместима с этой версией. Вам может потребоваться либо установить совместимую схему с aspnet_regsql.exe (доступно в каталоге установки платформы), либо обновить поставщика до более новой версии.


person ycseattle    schedule 22.03.2009    source источник


Ответы (3)


Это «переносимо», если у вас есть Framework 2.0 или выше в новой среде разработки и доступ к БД, содержащей схему.

Приложение aspnet_regsql.exe предназначено только для создания схемы БД. Реальная сделка происходит в web.config при указании вашего провайдера.

Пока у вас есть ссылка на файл .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>
person Raúl Roa    schedule 22.03.2009

Поставщик членства в SQL необходим для каждой базы данных. В процессе регистрации провайдера в базе данных создаются определенные таблицы. Если этих таблиц нет, вы получите ошибки, указанные выше.

Поскольку таблицы создаются в базе данных, у вас может быть столько разных приложений или машин для разработки, сколько вы хотите совместно использовать единую базу данных SQL.

Но если вам нужен другой экземпляр провайдера, потому что у вас другое приложение или вам нужно общаться с другой базой данных SQL, вам нужно будет снова зарегистрироваться (создать таблицы). Другой возможностью было бы использование репликации SQL для копирования таблиц из одной базы данных в другую.

Скорее всего, вашему приложению необходимо изменить файл web.config, чтобы убедиться, что оно имеет правильную строку подключения к существующей базе данных SQL.

person Tommy Hui    schedule 22.03.2009

У меня тоже была эта пробема. Для меня мне пришлось явно дать моему приложению имя (это было «/» на моей машине разработки).

веб.конфигурация:

<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
person Matt Frear    schedule 18.01.2011