Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Windows安全性连接到WCF服务时出错_C#_.net_Wcf_Iis_Windows Authentication - Fatal编程技术网

C# 使用Windows安全性连接到WCF服务时出错

C# 使用Windows安全性连接到WCF服务时出错,c#,.net,wcf,iis,windows-authentication,C#,.net,Wcf,Iis,Windows Authentication,我有一个客户端在两个端点上使用以下连接到WCF服务: <security mode="Message"> <message clientCredentialType="Windows" /> </security> 这在我的开发环境(都在本地运行)中工作,协商工作正常。当我将其推送到测试环境时,会收到以下消息: 与“http://host/service”用于目标 “http://host/service”失败。有关详细信息,请参阅内部异常 内部异常

我有一个客户端在两个端点上使用以下连接到WCF服务:

<security mode="Message">
  <message clientCredentialType="Windows" />
</security>

这在我的开发环境(都在本地运行)中工作,协商工作正常。当我将其推送到测试环境时,会收到以下消息:

与“http://host/service”用于目标 “http://host/service”失败。有关详细信息,请参阅内部异常

内部异常:

System.ComponentModel.Win32异常:安全支持提供程序 接口(SSPI)身份验证失败。服务器可能没有运行 在标识为“主机/服务器名.domain”的帐户中。如果 服务器在服务帐户中运行(例如网络服务), 将帐户的ServicePrincipalName指定为 服务器的终结点地址。如果服务器以用户身份运行 帐户,将帐户的UserPrincipalName指定为中的标识 服务器的终结点地址

在随机更改属性并进行一般性的混乱之后,我唯一能让它工作的方法是更改服务的应用程序池,以使用LocalSystem作为标识。这随后导致系统管理员有小猫,我不能继续这样做


有人能解释为什么会发生这种情况吗?客户端Windows帐户和应用程序池的标识都在同一个域中。该服务正在同一域中的服务器上运行。

如果身份验证与LocalSystem而不是域帐户一起工作,则可能是您缺少域帐户的SPN。此页面提供了有关配置服务运行身份的一些背景信息:

只是一个想法,如果机器是从模板(即克隆)设置为VM,可能会出现这种情况吗?我不确定正在克隆(或不克隆)的机器是否会影响这一点。要使用Kerberos,服务标识需要有效的SPN/UPN。