在web.config中我有:
<connectionStrings>
<clear /> <!--- need this to prevent using LocalSqlServer from machine.config or somewhere becouse it is not present when when publish to hosting -->
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-Goaly-20120615111028;Integrated Security=SSPI" />
</connectionStrings>
和
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<!-- I think this line is telling asp.net that I want the membership working agains defaultconnection, and not LocalSqlServer connection????? -->
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
然后它抱怨:
The connection name 'LocalSqlServer' was not found in the applications configuration or the connection string is empty.
当我在设置选项卡中使用VS2012 RC的发布时,我得到一个ModelContext和一个DefaultConnection,那么它应该如何工作呢?
我想要的只是将成员资格表与modelcontext创建的表格放在同一个数据库中。
这应该是如此,但我必须过分复杂一些。
感谢您的帮助。
此致
Larsi
答案 0 :(得分:6)
Windows机器上所有网站的默认设置都继承了2个配置文件的设置:machine.config和web.config,可以在Windows / Microsoft.NET / Framework目录(或64位Framework64)中找到)/版本/配置。
以下是machine.config默认版本的代码段:
<system.web>
<processModel autoConfig="true"/>
<httpHandlers/>
<membership>
<providers>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
</providers>
</membership>
<profile>
<providers>
<add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</profile>
<roleManager>
<providers>
<add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</roleManager>
</system.web>
所以问题的答案是:machine.config建立了与LocalSqlServer
连接的依赖关系。当您添加<clear/>
标记作为此问题建议的其他答案时,您将删除对名为AspNetSqlMembershipProvier
的成员资格提供程序的引用,并将其引用到LocalSqlServer
。
答案 1 :(得分:3)
以下帖子forumsasp中提及
在成员元素和rolemangaer元素(如果存在于web.config中)中的连接字符串之前添加</clear>
标记将解决问题。
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<clear/> <!-- solves the issue -->
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
您也可以使用SqlMetal.exe将成员资格表添加到现有数据库中。
答案 2 :(得分:2)
在加载配置文件之前,已经注册了一个memberhipprovider(在其中一个根配置文件中)。 membershippprovider指向LocalSqlServer。
您需要删除第一个成员提供者,这可以通过在添加提供者之前清除所有提供者来完成,就像您对连接字符串一样。
在<system.web>
部分的membership/providers
部分内,在<clear>
元素之前添加<add>
元素。