2011-02-18 42 views
2

我一直在试图让ASP.net成员ship proveider与我在SQL Azure中托管的其他数据库一起工作。我已经针对数据库运行了适当的SQL Azure特定脚本来进行设置。该脚本可以从微软在这里:http://archive.msdn.microsoft.com/KB2006191试图将Asp.Net Memebership数据库部署到SQL Azure

然而,每次我使用Visual Studio 10上运行我的网站在调试模式下,我得到以下错误:

An error occurred during the execution of the SQL file 'InstallCommon.sql'. The SQL error number is 5123 and the SqlException message is: CREATE FILE encountered operating system error 5(failed to retrieve text for this error. Reason: 15105) while attempting to open or create the physical file 'C:\USERS\ROBERTO\DOCUMENTS\VISUAL STUDIO 2010\PROJECTS\FLYINGSHAKESTORE\MVCMUSICSTORE\APP_DATA\ASPNETDB_TMP.MDF'. CREATE DATABASE failed. Some file names listed could not be created. Check related errors. Creating the ASPNETDB_74b63e50f61642dc8316048e24c7e499 database...

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

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

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

谢谢。

罗伯托

回答

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

+0

这是非常重要的,你和所有的供应商......否则系统变得困惑在哪个供应商使用,你会得到认证错误 – 2013-06-06 18:19:07

3

它看起来像你居然还引用本地文件的App_Data/ASPNETDB_TMP.MDF而不是SQL Azure的实例 - 所以我怀疑,而你为你的主数据的ConnectionString是正确的,那么你也有一个ConnectionString留在本地数据库呢?检查web.config中的成员提供商

2

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

<configuration> 
    <connectionStrings> 
     <add name="LocalSqlServer" 
     connectionString="Connectionstring..." 
     providerName="Provider..." /> 
    </connectionStrings> 
</configuration> 
相关问题