如何修复“在应用程序配置中找不到连接名称'LocalSqlServer'或连接字符串为空。”错误?
Posted
技术标签:
【中文标题】如何修复“在应用程序配置中找不到连接名称\'LocalSqlServer\'或连接字符串为空。”错误?【英文标题】:How to fix the "The connection name 'LocalSqlServer' was not found in the applications configuration or the connection string is empty." error?如何修复“在应用程序配置中找不到连接名称'LocalSqlServer'或连接字符串为空。”错误? 【发布时间】:2012-07-26 21:59:22 【问题描述】:我有一个使用 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 看起来与远程服务器上的相同。
【问题讨论】:
这很烦人。它实际上是在 machine.config 中定义的,因此远程计算机上可能缺少它。请参阅***.com/questions/5325907/… 和***.com/a/3699338/10731071 获取有关如何解决此问题的建议。 它似乎并没有从远程 machine.config 中丢失,因为错误消息专门引用了第 237 - 241 行。这一切都非常令人困惑。无论 machine.config 中有什么,它都希望在 web.config 中找到一个模拟? 它可能根本不存在于远程 machine.config 中。成员资格提供者首先查看全局配置 (Machine.config),然后查看本地 web.config,这就是替换它或清除它的原因。 但是如果错误信息专门引用了 machine.config 的第 237 -241 行,那不就意味着它在那里吗? Parser Error Message: The connection name 'LocalSqlServer' was not found in the applications configuration or the connection string is empty的可能重复 【参考方案1】:你需要从你的配置中删除它:
<remove name="AspNetSqlMembershipProvider" />
或者,更好的是,
<clear />
【讨论】:
谢谢,这行得通(我用的是透明的)。但是......为什么我必须为远程服务器这样做,而不是在本地?我的本地 machine.config 也有一个 AspNetSqlMembershipProvider 条目。 我需要这个角色提供者。奇怪的是,我已经做了 4 年的 .net 开发人员,但到目前为止从未需要过。【参考方案2】:您也可以尝试将连接字符串添加到您的配置文件中。即使不使用它,它也应该通过在配置中的其他地方引用它来修复出现的错误。
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
这通常在appSettings
和system.data
标签之间。
【讨论】:
以上是关于如何修复“在应用程序配置中找不到连接名称'LocalSqlServer'或连接字符串为空。”错误?的主要内容,如果未能解决你的问题,请参考以下文章