无法激活WCF服务

时间:2010-09-12 19:24:37

标签: wcf x509certificate

我的WCF(具有客户端和服务器证书)存在问题

例外:

  

System.ServiceModel.ServiceActivationException:   请求的服务,   'http://localhost/CustomerServiceSite/Customer.svc'   无法激活。见   服务器的诊断跟踪日志   更多信息..

错误堆栈跟踪:

  

DoNegotiation(TimeSpan超时)   System.ServiceModel.Security.SspiNegotiationTokenProvider.OnOpen(时间跨度   超时)   System.ServiceModel.Security.TlsnegoTokenProvider.OnOpen(时间跨度   超时)   System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(时间跨度   超时)   System.ServiceModel.Channels.CommunicationObject.Open(时间跨度   超时)   System.ServiceModel.Security.CommunicationObjectSecurityTokenProvider.Open(时间跨度   超时)   System.ServiceModel.Security.SecurityUtils.OpenTokenProviderIfRequired(SecurityTokenProvider   tokenProvider,TimeSpan超时)   System.ServiceModel.Security.SymmetricSecurityProtocol.OnOpen(时间跨度   超时)   System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(时间跨度   超时)   System.ServiceModel.Channels.CommunicationObject.Open(时间跨度   超时)OnOpen(TimeSpan超时)   System.ServiceModel.Channels.CommunicationObject.Open(时间跨度   超时)   System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.DoOperation(SecuritySessionOperation   操作,EndpointAddress目标,Uri   via,SecurityToken currentToken,   TimeSpan超时)   System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.GetTokenCore(时间跨度   超时)   System.IdentityModel.Selectors.SecurityTokenProvider.GetToken(时间跨度   超时)   ClientSecuritySessionChannel.OnOpen(时间跨度   超时)   System.ServiceModel.Channels.CommunicationObject.Open(时间跨度   超时)   System.ServiceModel.Channels.ServiceChannel.OnOpen(时间跨度   超时)   System.ServiceModel.Channels.CommunicationObject.Open(时间跨度   超时)   System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即时聊天   reqMsg,IMessage retMsg)   System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&安培;   msgData,Int32类型)   System.ServiceModel.ICommunicationObject.Open(时间跨度   超时)   System.ServiceModel.ICommunicationObject.Open(时间跨度   超时)打开()

Dignostics设置(在system.serviceModel内)

<diagnostics>
  <messageLogging logEntireMessage="true" logMalformedMessages="true"
  logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
</diagnostics>

我在哪里可以看到诊断错误?有人知道可能是什么问题吗?

2 个答案:

答案 0 :(得分:4)

该配置不足以记录这些错误消息。

您需要的是双重的 - 首先是您已经拥有的<system.serviceModel>内的部分,以指示WCF进行记录。

但是你还需要第二部分 - 在<system.diagnostics>内 - 来定义将信息记录到哪里!像这样:

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel.MessageLogging" switchValue="Information, ActivityTracing">
           <listeners>
             <add name="messages"
             type="System.Diagnostics.XmlWriterTraceListener"
             initializeData="c:\logs\messages.svclog" />
          </listeners>
        </source>
    </sources>
    <trace autoflush="true" />
</system.diagnostics>

System.Diagnostics命名空间中定义了一些不同的日志侦听器 - 这里将把这些信息记录到基于XML的*.svclog文件中,然后您可以使用{查看和分析{3}}

在MSDN上阅读有关Service Trace Viewer Tool的更多信息。

答案 1 :(得分:2)

只需使用事件查看器应用程序查看Applications事件日志即可。