【发布时间】:2011-02-22 00:01:40
【问题描述】:
我们有一个在 IIS 下运行的 .NET 3.5 Web 服务(不是 WCF)。它必须使用identity impersonate="true" 和集成Windows 身份验证才能对第三方软件进行身份验证。此外,它使用 ADO.NET 和 SQL Server 身份验证(在连接字符串中指定固定的用户 ID 和密码)连接到 SQL Server 数据库。
在数据库从 SQL Server A 移动到 SQL Server B 之前一切正常。(两者都与 Web 服务器不一样。)然后 Web 服务将抛出以下异常:
网络相关或 发生特定于实例的错误 建立与 SQL 的连接 服务器。找不到服务器或 无法访问。验证 实例名称正确且该 SQL 服务器配置为允许远程 连接。 (提供者:命名管道 提供者,错误:40 - 无法打开 连接到 SQL Server)
此错误仅在 Web.config 中的身份模拟为 true 时发生。
同样,连接字符串没有改变,它指定了用户。我已经测试了连接字符串,它在模拟帐户和服务帐户下(以及来自远程计算机和服务器)都有效。
需要进行哪些更改才能使其与模拟一起使用?
编辑:
Remus Rusanu 为我们指明了正确的方向。它归结为 Kerberos - 没有为新服务器设置 SPN。另见asp.net via kerberos integrated windows authentication to sql server。谢谢!
【问题讨论】:
标签: sql-server web-services ado.net asmx impersonation