Попытка развернуть базу данных членства Asp.Net в SQL Azure. - PullRequest
2 голосов
/ 19 февраля 2011

Я пытался заставить провайдера корабля-члена ASP.net работать с остальной частью моей базы данных, которая размещена в SQL Azure.Я запустил соответствующие сценарии SQL Azure для базы данных, чтобы настроить его.Сценарии доступны от Microsoft здесь: http://archive.msdn.microsoft.com/KB2006191

Однако каждый раз, когда я запускаю свой сайт в режиме отладки с использованием Visual Studio 10, я получаю следующую ошибку:

Произошла ошибкаво время выполнения файла SQL 'InstallCommon.sql'.Номер ошибки SQL 5123, а сообщение SqlException: CREATE FILE обнаружена ошибка операционной системы 5 (не удалось получить текст для этой ошибки. Причина: 15105) при попытке открыть или создать физический файл 'C: \ USERS \ ROBERTO \ DOCUMENTS\ VISUAL STUDIO 2010 \ ПРОЕКТЫ \ FLYINGSHAKESTORE \ MVCMUSICSTORE \ APP_DATA \ ASPNETDB_TMP.MDF '.СОЗДАТЬ БАЗУ ДАННЫХ не удалось.Некоторые имена файлов не могут быть созданы.Проверьте связанные ошибки.Создание базы данных ASPNETDB_74b63e50f61642dc8316048e24c7e499 ...

Весь другой доступ к базе данных работает отлично.Так что это не моя строка подключения.

Я думаю, что когда провайдер членства впервые вызывается, ASP.Net пытается присоединить новую базу данных Memberhship к SQLAzure (что он в любом случае не может), потому что считает, что одинне существует.Я не знаю, как отключить это поведение.

Кто-нибудь знает, что я могу сделать?

Спасибо.

Роберто

Ответы [ 3 ]

3 голосов
/ 20 февраля 2011

Похоже, что вы на самом деле все еще ссылаетесь на локальный файл App_Data / ASPNETDB_TMP.MDF вместо экземпляра SQL Azure - поэтому я подозреваю, что, хотя ваша ConnectionString для ваших основных данных верна, у вас также есть оставленная строка ConnectionString длялокальная база тоже?Проверьте в поставщиках членства в web.config

2 голосов
/ 03 марта 2011

Спасибо, ребята.

После некоторых экспериментов я пришел к следующему:

<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
        <providers>
            <clear/>
            <add name="AspNetSqlRoleProvider" connectionStringName="..." type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral...."/>
        </providers>
    </roleManager>
    <membership>
        <providers>
            <clear/>
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider.... connectionStringName=""..../>
        </providers>
    </membership>
    <profile>
        <providers>
            <clear/>
            <add name="AspNetSqlProfileProvider" connectionStringName="" type="System.Web.Profile.SqlProfileProvider..../>
        </providers>
    </profile>

Кажется, это работает отлично.Он очищает, а затем повторно добавляет поставщиков с правильной строкой подключения.

Это зависит от того, что вы запустили правильные сценарии SQL для базы данных.Вы можете получить их здесь: http://support.microsoft.com/kb/2006191

2 голосов
/ 20 февраля 2011

Я думаю, что по умолчанию система присоединения asp.net использует строку подключения с именем LocalSqlServer.Настройте это в своем файле web.config, и вам будет хорошо.

<configuration>
    <connectionStrings>
      <add name="LocalSqlServer"
         connectionString="Connectionstring..."  
         providerName="Provider..." />
    </connectionStrings>
</configuration>
...