诊断SecurityNegotiationException

时间:2013-11-13 09:55:38

标签: c# wcf

var client = new CommonClient()
XElement exceptionDates = XElement
    .Parse(client.ExceptionDatesUpdateControl("status").OuterXml);

致电:

client.ExceptionDatesUpdateControl("status")

抛出以下错误:

  

SecurityNegotiationException:对SSPI的调用失败

原因是什么?

其他信息:

的Web.config:

<system.serviceModel>
    <bindings>
      <netNamedPipeBinding>
        <binding name="NetNamedPipeBinding_ICommon" />
      </netNamedPipeBinding>
    </bindings>
    <client>      
      <endpoint address="net.pipe://localhost/service/common" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_ICommon" contract="Service.Common.ICommon" name="NetNamedPipeBinding_ICommon">            
      </endpoint>
    </client>

App.config中:

<services>
      <service name="PROJ.Service.CommonService" behaviorConfiguration="CommonServiceBehavior">
        <host>
          <baseAddresses>            
            <add baseAddress="net.pipe://localhost/service/common"/>
          </baseAddresses>
        </host>            
        <endpoint
             address="net.pipe://localhost/service/common"
             binding="netNamedPipeBinding"
             bindingConfiguration="pipeCommonServiceBinding"
             contract="PROJ.Service.ICommon"
             />

2 个答案:

答案 0 :(得分:0)

  

在以下情况下可能会发生此异常:

     

•谈判时   初始安全上下文。确切的错误取决于   使用的协商技术:简单和受保护的GSS-API   谈判(SPNEGO)或TLSNEGO。有关更多信息,请参阅安全性   协议

     

•在初始安全性之上建立安全会话   上下文。

     

•在现有安全会话的密钥续订期间。

     

安全协商错误可能会作为Spnego / Sslnego的一部分发生   安全协议或作为SecureConversation协议的一部分。

来源:MSDN

答案 1 :(得分:0)

  

我找到了答案   当我看得更深时,还有另一个例外:   “Security.Authentication.AuthenticationException”。

     

当我在配置文件中注释这些行时,它消失了:

 <!--identity>
      <servicePrincipalName value="host/..." />
    </identity-->