调试EF4的SaveChanges在WCF服务由IIS托管(Debug EF4 SaveChange

2019-07-29 18:29发布

在现有的代码transactionEntities的规模越来越大,并在几乎最后的发言中,我们已经有了

transactionEntities.SaveChanges(System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave);

就目前存在一个日志也不例外,但显然出现了问题,因为有记录没有最终的消息(“完了......”)。 这里其实2个问题

  1. 有没有办法理解发生了什么
  2. 是否有可能以某种方式分批模仿单个语句来保存,因为transactionEntities不断增长的反正。

提取服务代码到控制台应用程序有可能解决的时刻(如引发公司内部的一种方式的服务,所以对于服务本身没有真正的需要)的问题,但没有解决问题的现有服务。

Answer 1:

对于问题#1 - 你可以打开诊断你的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)的\微软的SDK \的Windows \ v7.0A \ BIN \启动SvcTraceViewer.exe。 同时加载邮件跟踪(services_messages.svclog)和服务跟踪日志(services_tracelog.svclog)。 您可以拖放在工具或打开一个文件,然后添加其他

4)寻找一个问题的红色粗体字。

如果你想使你的经验编辑WCF配置更可口,您可以使用该同一文件夹下找到为SvcTraceViewer.exe SvcConfigEditor.exe(#3)。 只需打开配置文件,你会看到诊断文件夹,让您开始/停止和配置诊断。



文章来源: Debug EF4 SaveChanges in WCF service hosted by IIS