2010-09-12 140 views
1

我有我的WCF的问题(其中有客户端和服务器证书)WCF服务不能启动

例外:

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

错误堆栈跟踪:

DoNegotiation(时间跨度超时) System.ServiceModel.Security.SspiNegotiationTokenProvider.OnOpen(时间跨度 超时) System.ServiceModel.Security.TlsnegoTokenProvider.OnOpen(TimeSpan timeout) System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan 超时) System.ServiceModel.Channels.CommunicationObject.Open(时间跨度 超时) System.ServiceModel.Security.CommunicationObjectSecurityTokenProvider.Open(时间跨度 超时) System.ServiceModel.Security.SecurityUtils.OpenTokenProviderIfRequired(SecurityTokenProvider tokenProvider,时间跨度超时) System.ServiceModel.Security.SymmetricSecurityProtocol.OnOpen(时间跨度 超时) System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(时间跨度 超时) System.ServiceModel.Channels.CommunicationObject.Open(时间跨度 超时)的OnOpen(时间跨度超时) System.ServiceModel.Channels.CommunicationObject.Open(时间跨度 超时) System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.DoOperation(SecuritySessionOperation 操作,目标的EndpointAddress,乌里 经由SecurityToken currentToken, 时间跨度超时) 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,即时聊天retMsg) System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData & MSGDATA,的Int32类型) System.ServiceModel.ICommunicationObject.Open(时间跨度 超时) System.ServiceModel.ICommunicationObject.Open(时间跨度 超时)打开()

Dignostics设置(系统内部。serviceModel)

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

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

回答

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文件,然后你就可以查看和使用Service Trace Viewer Tool分析。

在MSDN上了解更多关于Configure Message Logging的内容。

2

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