我们有一个WCF服务已经好几个月了。就在今天早上,对该服务的调用开始失败,代理服务器报告“由对等方重置连接”(502)。奇怪的是,删除的连接没有IIS日志条目,尽管我们能够使用WireShark检测它们。所以似乎线程正在死亡,没有任何痕迹。
有问题的网络方法是检索100个数据库记录。我们发现通过将结果限制为20条记录,它可以按预期工作。我怀疑有超时发挥作用,但没有例外或追溯,很难知道。
有没有人经历过这个?有关如何排除故障的任何建议吗?
答案 0 :(得分:19)
您可以在服务上启用WCF诊断,以获取有关例外的更多详细信息。
为了让您快速上手 - 在您的网络(或应用)配置中
1)在配置元素下的任何位置添加System.Diagnostics部分。您可以将路径替换为您希望存储文件的路径。
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="ServiceModelMessageLoggingListener">
<filter type="" />
</add>
</listeners>
</source>
<source name="System.ServiceModel" switchValue="Warning, ActivityTracing" propagateActivity="true">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="ServiceModelTraceListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\temp\services_messages.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelMessageLoggingListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack">
<filter type="" />
</add>
<add initializeData="C:\temp\services_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack">
<filter type="" />
</add>
</sharedListeners>
</system.diagnostics>
2)在system.ServiceModel下添加以下内容:
<diagnostics wmiProviderEnabled="false">
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
</diagnostics>
3)在C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ start SvcTraceViewer.exe下。加载消息跟踪(services_messages.svclog)和服务跟踪日志(services_tracelog.svclog)。您可以在工具中拖放文件或打开文件,然后添加另一个
4)找出问题的红色粗体字母。
如果您想让编辑WCF配置的体验更加可口,可以使用SvcConfigEditor.exe,它位于与SvcTraceViewer.exe(#3)相同的文件夹下。只需打开配置文件,您就会看到Diagnostics文件夹,它允许您启动/停止和配置诊断。
答案 1 :(得分:1)
至于问题排查,WCF trace有时可以帮助解决这些问题。