【发布时间】:2012-04-25 21:24:17
【问题描述】:
我正在尝试从 EntLib(MVC3、EntLib5、SQL Server 2008)调用存储过程。我正在使用 SQL Server 的默认实例,并且可以从 SQL Server Management Studio 很好地连接到它。我已经尝试了所有可以在网上找到的东西,但没有任何东西能让我保持联系。该服务作为 LocalSystem 运行。这是连接字符串:
Server=local;Database=Test;Trusted_Connection=True
这是我收到的错误消息:
在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)
【问题讨论】:
-
现在,它似乎正在缓存“本地”。如何强制它读取新的服务器名称?
-
您必须关闭并重新启动您的应用程序。也许可以回收 IIS 中的应用程序池以达到很好的效果(假设您使用的是 IIS 而不是 Cassini,内置的 VS Web 服务器)。
-
即使重新启动后,它似乎仍然返回缓存的结果。我确实验证了您建议的服务器名称允许我通过 EntLib 连接到数据库。这就是我尝试读取连接字符串的方式: ConfigurationManager.ConnectionStrings[Const.ConnectionString].ConnectionString;
-
我不确定发生了什么。应用程序设置不会被缓存——一旦您的应用程序被回收,它将重新读取设置。你在使用 web.config 转换吗?您是否将连接字符串硬编码或设置在多个位置?如果您将连接字符串硬编码到您的代码中,而不是从配置管理器中读取它会怎样?
-
如果您正在调试(如果您在 Visual Studio 中单击“调试”按钮),它将使用 Web.config 中的任何内容。如果您在 Debug 配置中发布您的应用程序集,它将使用 Web.Debug.config,如果您在 Release 配置中发布您的应用程序集,它将使用 Web.Release .config。快乐编码!
标签: sql-server-2008 ado.net enterprise-library