我一直在尝试让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(它无论如何都不能),因为它认为它不存在。我不知道如何关闭此行为。
任何人都知道我能做什么?
感谢。
罗伯特
答案 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