具有模拟的WCF服务无法连接到SQL Server,但同一台计算机上的SSMS将连接到

本文关键字:连接 一台 SSMS 计算机 Server 服务 WCF 模拟 SQL | 更新日期: 2023-09-27 18:24:57

我有一个问题,我根本无法思考如何解决。在底部有一个WCF服务(.NET 4.0),它被配置为模拟一个有效的用户,如下所示:

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <identity impersonate="true" password="abc123" userName="domain'theuser" />
</system.web>

SQL Server连接字符串如下所示:

<connectionStrings>
    <add name="MyTest.Service.Properties.Settings.ConnStr"
         connectionString="Data Source=192.168.0.54;Initial Catalog=TheDatabase;Integrated Security=SSPI;" />
</connectionStrings>

我让WCF服务在IIS7下运行,并且在一个应用程序池中运行,该应用程序池也使用相同的用户凭据运行。

如果我尝试在同一台机器上的SSMS中使用这些凭据(用户在SQL Server上被设置为有效用户)访问数据库,一切都很好,但一旦我对WCF服务尝试了同样的操作,它就会抛出以下消息:

System.Data.SqlClient.SqlException(0x80131904):在建立与SQL Server的连接时,出现与网络相关或特定于实例的错误。找不到或无法访问服务器。请验证实例名称是否正确,以及SQL Server是否已配置为允许远程连接。(提供程序:命名管道提供程序,错误:40-无法打开与SQL Server的连接)

究竟是什么问题?我让服务器上运行的其他应用程序访问其他外部SQL server数据库时没有遇到任何问题。

具有模拟的WCF服务无法连接到SQL Server,但同一台计算机上的SSMS将连接到

这很可能是您的连接字符串,因为它不是为凭据提供的错误。

如果SQL服务器是本地的,则可以尝试"datasource=(local)"。

您也可以尝试将实例添加到数据源中。

如果是远程SQL服务器,请确保将SQL服务器配置为允许远程连接

取自msdn

如果数据库位于远程服务器上,则还必须配置Active Directory中用于委派的相关帐户。例如,您必须确保应用程序的服务帐户标记为受信任进行委派,并且最终用户帐户未标记为敏感,这意味着它们不能被委派。