【问题标题】:How does one debug a WCF Data Service?如何调试 WCF 数据服务?
【发布时间】:2010-11-03 16:13:57
【问题描述】:

我在 Asp.Net 网站上托管了一个 WCF 数据服务。这是我的 web.config 服务部分:

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
 <services>
     <service name="DataServiceHost"
  behaviorConfiguration="DataServiceBehavior">
  <endpoint name="DataServiceHost"
                    address=""
                    binding="webHttpBinding"
                    contract="System.Data.Services.IRequestHandler" />
            </service>
 </services>
 <behaviors>
     <serviceBehaviors>
  <behavior name="DataServiceBehavior">
      <serviceDebug includeExceptionDetailInFaults="true"/>
  </behavior>

我的InitializeService 方法中有config.UseVerboseErrors = true;

我点击F5 我进入调试模式,并浏览到我的服务,得到一个错误,但它不会在 VS 中中断。我不知所措。

顺便说一句:服务器在处理请求时遇到错误。有关详细信息,请参阅服务器日志。

我已查找日志...我已为该站点设置了 ELMAH,但其中没有任何内容。所以我不确定它在说什么服务日志

任何帮助将不胜感激。

【问题讨论】:

标签: asp.net wcf wcf-data-services


【解决方案1】:

您可以像这样启用错误日志记录:

<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>
    </sources>
    <sharedListeners>
      <add initializeData="c:\TEMP\web_messages.svclog"
        type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
        name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
        <filter type="" />
      </add>
    </sharedListeners>
  </system.diagnostics>

在此处获取更多信息:http://msdn.microsoft.com/en-us/library/ms730064.aspx

可以在记事本或“服务跟踪查看器”中查看输出文件 - 请参阅http://msdn.microsoft.com/en-us/library/aa751795.aspx

如果您在 IIS 中托管,则可以使用远程调试:http://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspx

【讨论】:

  • 那么......没有办法调试在我的本地机器上运行的这个东西吗?托管在我本地机器上的网站上,使用 VS 调试器 -> 附加到进程方法?
  • 如果它是从 VS 启动的,它已经处于调试模式,您应该能够正常插入断点。如果它在 VS 外部运行,如果您正在运行调试构建,则可以使用附加处理。
  • 问题是,我相信,它在反映服务的元数据时会引发错误,大概是因为我在某处遗漏了一个属性。我尝试过覆盖Handle Exception 并在其中粘贴Debugger.Break();,但它永远不会被击中。
  • 那么在 Debug>Exceptions 窗口中为异常启用“Thrown”怎么样? (快捷键是Ctrl+D、E)
【解决方案2】:

另外,你可以订阅你的objectcontext的sendingrequest事件:http://msdn.microsoft.com/en-us/library/system.data.services.client.dataservicecontext.sendingrequest.aspx

然后,在事件处理程序中设置断点并检查请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    相关资源
    最近更新 更多