如何修复"在应用程序配置中找不到连接名称'LocalSqlServer'或连接字符串为空." 错误?

Cyn*_*hia 8 asp.net asp.net-membership membership-provider sql-server-ce entity-framework-4

我有一个使用SQL Server CE 4.0和Entity Framework 4.0的ASP.NET项目.它在我的本地计算机上工作正常.

但是,当我将它移动到远程服务器,并尝试登录到程序的管理部分时,我收到以下错误:

The connection name 'LocalSqlServer' was not found in the applications configuration or the connection string is empty.
Run Code Online (Sandbox Code Playgroud)

它引用了远程服务器上machine.config中的以下行:

Line 237:    <membership>
Line 238:      <providers>
Line 239:        <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="" />
Line 240:      </providers>
Line 241:    </membership>
Run Code Online (Sandbox Code Playgroud)

现在,我的web.config中没有"AspNetSqlMembershipProvider"语句,它引用了一个名为"LocalSqlServer"的连接字符串.相反,我有以下内容:

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider" connectionStringName="PUGConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>
Run Code Online (Sandbox Code Playgroud)

这实际上在本地工作.连接字符串的名称是PUGConnection,而不是LocalSqlServer.

为什么这会在本地工作,而不是远程工作?(远程服务器是共享服务器 - 我无权访问machine.config.)

如果我将连接字符串的名称更改为LocalSqlServer,它会起作用吗?如果是这样,为什么它会在我的本地计算机上以其他方式工作?据我所知,我本地计算机上的machine.config看起来与远程服务器上的相同.

SLa*_*aks 16

您需要从配置中删除它:

<remove name="AspNetSqlMembershipProvider" />
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,

<clear />
Run Code Online (Sandbox Code Playgroud)