Поставщик членства ASP.NET на другом компьютере разработчика - PullRequest
2 голосов
/ 22 марта 2009

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

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

The 'System.Web.Security.SqlMembershipProvider' требуется схема базы данных, совместимая с версией схемы '1'. Тем не менее текущая схема базы данных не совместим с этой версией. Ты можешь нужно либо установить совместимый схема с aspnet_regsql.exe (доступно в рамках каталог установки) или обновить провайдер на более новую версию.

Ответы [ 3 ]

3 голосов
/ 22 марта 2009

Он «переносимый», если у вас есть среда 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>
0 голосов
/ 18 января 2011

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

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
0 голосов
/ 22 марта 2009

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

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

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

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

...