WCF @ServiceHost Debug =“true”但web.config compilation =“false”

时间:2011-12-02 21:01:43

标签: .net wcf debugging web-config release-mode

我一直在查找MSDN文档,但没有找到具体的答案。

@ServiceHost中的Debug属性是否覆盖了Web.config的编译属性,还是web.config属性覆盖了所有属性?

感谢。

1 个答案:

答案 0 :(得分:1)

根据:http://msdn.microsoft.com/en-us/library/aa702682.aspx

  

ASP.NET HTTP运行时处理ASP.NET请求,但不参与处理发往WCF服务的请求,即使这些服务与ASP.NET内容一样托管在同一AppDomain中。相反,WCF服务模型拦截发往WCF服务的消息,并通过WCF传输/通道堆栈路由它们。

除非您在WCF的ASP.NET兼容模式下运行服务。在那种情况下......

  

与默认的并排配置不同,WCF托管基础架构拦截WCF消息并将其路由出HTTP管道,在ASP.NET兼容模式下运行的WCF服务完全参与ASP.NET HTTP请求生命周期。在兼容模式下,WCF服务通过IHttpHandler实现使用HTTP管道,类似于处理ASPX页面和ASMX Web服务请求的方式。

如果我们接受这个断言,那么我们知道应该遵守配置继承。

如果你想确定你可以设置一个测试......

在ASP.NET兼容模式下运行的WCF服务可以访问HttpContext.Current及其关联状态。这意味着您可以询问IsDebuggingEnabled属性以查看您是否处于调试模式。您还可以使用#if DEBUG之类的编译器指令来查看是否已到达代码块。

我很想知道最终的判决是什么。我认为这个问题的关键在于它是否是在IIS中托管的WCF服务,以及它是否在AspCompatibility模式下运行。