Использование System.Web.Providers с Sql Compact - PullRequest
1 голос
/ 08 июля 2011

Следуя статье shanselman Я пытаюсь использовать «System.Web.Providers», чтобы вы могли использовать членство, правила и профили с Sql Server Compact.

Я установил через Nuget, создал базу данных Users.sdf и скопировал в папку App_Data. Мой Web.config был следующим:

<profile defaultProvider="DefaultProfileProvider">
  <providers>
    <clear />
    <add
      name="DefaultProfileProvider"
      type="System.Web.Providers.DefaultProfileProvider"
      connectionStringName="DefaultConnection"
      applicationName="/" />
  </providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <clear />
    <add connectionStringName="DefaultConnection" enablePasswordRetrieval="false"
      enablePasswordReset="true" requiresQuestionAndAnswer="false"
      requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
      applicationName="/" name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider" />
  </providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider">
  <providers>
    <clear />
    <add connectionStringName="DefaultConnection" applicationName="/"
      name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider" />
  </providers>
</roleManager>
<sessionState mode="Custom" customProvider="DefaultSessionProvider">
  <providers>
    <add
      name="DefaultSessionProvider"
      type="System.Web.Providers.DefaultSessionStateProvider"
      connectionStringName="DefaultConnection"
      applicationName="/" />
  </providers>
</sessionState>

<connectionStrings>
  <add name="Sql_CE" connectionString="Data Source=|DataDirectory|\Users.sdf;"
       providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>

Я не могу использовать aspnet_regsql, потому что он генерирует таблицы на основе SQL Server

Следующая ошибка возникает при попытке доступа к «средству администрирования веб-сайта» на странице безопасности

Проблема с выбранным вами хранилище данных. Это может быть вызвано неверное имя или учетные данные сервера, или по недостаточному разрешению. Оно может также быть вызвано роль менеджера функция не включена. Нажмите на кнопка ниже, чтобы быть перенаправлена ​​на страница, где вы можете выбрать новые данные хранить.

Следующее сообщение может помочь в диагностирование проблемы: предварительная инициализация запуска приложения метод Старт по типу WebMatrix.WebData.PreApplicationStartCode бросил исключение со следующим сообщение об ошибке: этот метод не может быть вызывается во время приложения этап предварительной инициализации.

1 Ответ

2 голосов
/ 08 июля 2011

Сначала переименуйте строку подключения в DefaultConnection и удалите \ перед Users.sdf следующим образом:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|Users.sdf;"
       providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>

Вы говорите, что вы

создал базу данных Users.sdf

как? Платформа провайдеров и SqlCe должны сделать это для вас. Попробуйте удалить Users.sdf из папки App_Data и попробуйте снова открыть «Инструмент администрирования веб-сайта». Механизм провайдера должен воссоздать его для вас.

...