8

我有一个使用 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.

它引用远程服务器上 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>

现在,确实我的 web.config 中没有引用名为“LocalSqlServer”的连接字符串的“AspNetSqlMembershipProvider”语句。相反,我有以下内容:

<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>

这实际上在本地有效。连接字符串的名称是 PUGConnection,而不是 LocalSqlServer。

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

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

4

2 回答 2

17

您需要将其从配置中删除:

<remove name="AspNetSqlMembershipProvider" />

或者,更好的是,

<clear />
于 2012-07-26T22:02:47.170 回答
4

您也可以尝试将连接字符串添加到您的配置文件中。即使不使用它,它也应该通过在配置中的其他位置引用它来修复出现的错误。

<connectionStrings>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>

这通常在appSettingssystem.data标签之间。

于 2015-06-01T12:08:11.407 回答