WCF入门开发的常见问题(2)

361 阅读1分钟

通讯断开

项目的一个服务在跑一个数据越来越多的服务时,通讯老是会断开。 这个问题是因为数据量大了超过了wcf的默认设置,需要更改相应app.config的wcf配置。
wcf - The maximum message size quota for incoming messages (65536) has been exceeded - Stack Overflow
c# - WCF: The socket connection was aborted - Stack Overflow

  • 注意客户端和服务端都要设置(可能因为我的服务有回调)。
  • 注意有些配置是相关的,只改某一个是没用的。

wcf调试信息记录

wcf可以将内部信息日志保存,以便诊断问题。 开启的方法是在App.config中增加相应的配置,相对应的微软官方文档如下:
(Configuring Tracing - WCF | Microsoft Docs)
Service Trace Viewer Tool (SvcTraceViewer.exe) - WCF | Microsoft Docs

贴一下我的设置:

<configuration>
  <!-- 其他配置 -->
  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
                 switchValue="All"
                 propagateActivity="true">
        <listeners>
          <add name="traceListener"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData= "C:\TracesClient.svclog" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>
</configuration>

注意:

  • 文件路径必须存在,不会自动创建。
  • 记录的信息还是不够全面,如果抓不到想要的信息还可以用vs调试并关闭仅我的代码选项。

未验证

搜到的一个问题,没有验证,感觉以后可能会用的上,记录一下:
WCF实现长连接 - 云+社区 - 腾讯云 (tencent.com)