c# - WCF 跟踪和消息日志记录不会在服务主机(服务器)端写入日志文件

标签 c# wcf logging web-config trace

我的 WCF 服务出现某种错误。

我需要确定发生了什么,因此我尝试启用服务跟踪日志记录。

我遵循了规定的指南并使用了 wcf configuration editor在我的客户端和服务器中设置跟踪和消息日志记录。

跟踪在客户端工作正常,但在这种情况下消息的用途有限,因为它们只是表明真正的故障发生在服务器上,我应该检查服务器日志:

An error occurred while receiving the HTTP response to http://localhost:24162/MembershipService.svc. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details.

我正在 Debug模式下运行,因此本例中的服务器是在端口 24162 上运行的 asp.net 开发服务器。

服务主机 web.config 的我的诊断部分:

 <system.diagnostics>
<sources>
  <source propagateActivity="true" name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
    <listeners>
      <add type="System.Diagnostics.DefaultTraceListener" name="Default">
        <filter type="" />
      </add>
      <add name="ServiceModelTraceListener">
        <filter type="" />
      </add>
    </listeners>
  </source>
  <source name="System.ServiceModel.MessageLogging" switchValue="Verbose,ActivityTracing">
    <listeners>
      <add type="System.Diagnostics.DefaultTraceListener" name="Default">
        <filter type="" />
      </add>
      <add name="ServiceModelMessageLoggingListener">
        <filter type="" />
      </add>
    </listeners>
  </source>
</sources>
<sharedListeners>
  <add initializeData="C:\Logs\web_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
    <filter type="" />
  </add>
  <add initializeData="C:\Logs\web_messages.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
    <filter type="" />
  </add>
</sharedListeners>
<trace autoflush="true" />

和system.servicemodel部分

<system.serviceModel>
        <diagnostics>
      <messageLogging logEntireMessage="true" logKnownPii="true" logMalformedMessages="true"
        logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
      <endToEndTracing propagateActivity="true" activityTracing="true"
        messageFlowTracing="true" />
    </diagnostics>
</system.serviceModel>

目录“C:\Logs”确实存在,并且我已授予“Everyone”完全控制权。我还验证了 TRACE 常量的定义只是为了确定。

正如您所看到的,我正在 try catch 跟踪/消息日志记录必须提供的所有内容。任何事情都可以。但可惜的是,我什么也没得到,什么也没有。

在查看了该网站上现有的问题并进行了大量的谷歌搜索之后,遵循了一些建议(确保该文件夹存在,验证用户对该文件夹具有适当的权限),我感觉并没有更接近于理解为什么我的跟踪不写入任何文件。关于如何解决跟踪日志记录问题有什么建议吗?是否有任何记录在其他地方的信息可以表明跟踪不起作用的原因?

供引用和 future 的读者 -

我去了here有关服务跟踪日志记录配置说明。 我去了herehere尝试解决日志文件未写入的问题。

最佳答案

我写了this up大约一个月前,在我开始跟踪日志记录后。看看是否对你有帮助。在你的配置中,我没有发现任何看起来不正确的地方。然而,也许重新开始我的配置将有助于阐明情况。

关于c# - WCF 跟踪和消息日志记录不会在服务主机(服务器)端写入日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10166098/

相关文章:

asp.net - 在asp.net网络表单应用程序中选择启用了Ajax的WCF服务时,优缺点是什么?

logging - 灵药/Phoenix : How to customize HTTP request log format?

logging - 如何在 React Native 中进行日志记录

c# - 在低质量图像中查找简单对象

javascript - 语法错误: Invalid character in jQuery $. ajax调用在哪里?

c# - Unity-Monodevelop变量同步问题

wcf - 如何将用户凭据从 WebClient 传递到 WCF REST 服务?

python - 如何在 Python 中记录包名称?

c# - 下载大文件,保存在数据库中

c# - 如何在没有减号的情况下使用 string.Format() 填充数字?