尝试将Asp.Net Memebership数据库部署到SQL Azure

时间:2011-02-18 22:34:45

标签: asp.net sql-server azure membership

我一直在尝试让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:\用户\ ROBERTO \文档\ Visual   工作室   2010 \ PROJECTS \ FLYINGSHAKESTORE \ MVCMUSICSTORE \ APP_DATA \ ASPNETDB_TMP.MDF”。   CREATE DATABASE失败。一些文件   无法创建列出的名称。   检查相关错误。创造   ASPNETDB_74b63e50f61642dc8316048e24c7e499   数据库...

对数据库的所有其他访问都完美无缺。所以它不是我的连接字符串。

我认为,当首次调用成员资格提供程序时,ASP.Net会尝试将新的Memberhship数据库附加到SQLAzure(它无论如何都不能),因为它认为它不存在。我不知道如何关闭此行为。

任何人都知道我能做什么?

感谢。

罗伯特

3 个答案:

答案 0 :(得分:3)

看起来你实际上仍在引用本地文件App_Data / ASPNETDB_TMP.MDF而不是SQL Azure实例 - 所以我怀疑当你的主数据的ConnectionString是正确的时候,你还有一个ConnectionString,本地数据库呢?检查web.config中的成员资格提供程序

答案 1 :(得分:2)

我认为默认情况下,asp.net mebership系统使用名为LocalSqlServer的连接字符串。在你的web.config中设置它,你应该很高兴。

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

答案 2 :(得分:2)

谢谢大家。

经过一些实验,这就是我想出来的:

<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