2010-11-03 85 views
1

我有一个WCF数据服务托管在Asp.Net网站。这里是我的web.config服务部分:如何调试WCF数据服务?

<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中打破。我很茫然。

错误btw:服务器在处理请求时遇到错误。查看服务器日志获取更多详细信

我查找了日志...我有ELMAH设置为该网站,没有在那里。所以我不确定它在说什么服务日志

任何帮助将不胜感激。

+0

你是如何“浏览到你的服务”? – 2010-11-03 16:17:03

+0

http://localhost/services/myservice.svc我有调试安装程序使用IIS。 – 2010-11-03 16:24:04

回答

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

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

如果你在IIS中主机,你可以使用远程调试:http://www.codeproject.com/KB/aspnet/IISRemoteDebugging.aspx

+0

那么...有没有办法调试我的本地机器上运行的东西?托管在我的本地机器上的一个网站上,用VS调试器 - >附加到过程方法? – 2010-11-03 20:12:26

+0

如果它是从VS启动的,它已经处于调试模式,您应该能够正常插入断点。 如果它在VS外运行,如果您正在运行调试版本,则可以使用attach进程。 – Fedearne 2010-11-03 20:40:20

+1

问题是,我相信它会在反映服务的元数据时抛出错误,可能是因为我在某处丢失了某个属性。我已经尝试覆盖'Handle Exception'并在其中粘贴'Debugger.Break();',但它永远不会被击中。 – 2010-11-05 14:19:52