我已经阅读了关于堆栈溢出和 MSDN 的其他类似问题,但仍然找不到这个问题的答案。
我的开发机器正在运行 VS2010SP1 和 IIS7。IIS7 是在 .Net 框架之后安装的,所以我不得不手动配置网站。我将应用程序部署到本地 IIS,而不是使用 Casinni。
环境:
- Win7 64 位(开发机器)上的 Visual Studio 2010
- IIS 在 Win7 64 位(开发机器)上运行
- 在 Win2008(服务器)上运行的 SQL Server 2008
在 Visual Studio 中网站的选项中,我选择使用 IIS 并单击创建虚拟目录,它可以工作(即它成功创建了目录)。
但是当我运行该应用程序时,我收到一条 SQL 连接错误消息:
与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。
SQL Server 配置为允许远程连接,我可以使用相同的凭据从开发机器连接到 Management Studio 中的 SQL Server(当前是 sa 帐户,是的,我知道这很糟糕,以后会更改它,这仅用于开发目的)。
为了以防万一,我尝试将machine.config
条目的文件更改LocalSqlServer
为指向服务器,但这并没有帮助,即使服务器是远程的而不是本地的。
我还尝试将其添加到 web.config:
<remove name="LocalSqlServer" />
<add name="LocalSqlServer"
connectionString="Data Source=esdc01;Initial Catalog=ECS;Persist Security Info=True;User ID=sa;Password=******;MultipleActiveResultSets=True;Network Library=dbnmpntw;"
providerName="System.Data.SqlClient" />
中的连接字符串web.config
是正确的。
如果我在 VS2010 中进入网站的属性并将其更改回“使用 Visual Studio 开发服务器”,那么应用程序工作正常并且它确实连接到 SQL Server。
因此,当我使用 IIS 时,似乎会访问web.config
NOR 以machine.config
获取它们的连接字符串......那么 IIS 在哪里寻找连接字符串?我很困惑!
在服务器上,已启用命名管道和 TCP/IP。