WCF @ServiceHost Debug="true"但web.config的compilation="false"是什么意思?

4

我一直在 MSDN 文档中寻找答案,但没有找到确切的答案。

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

谢谢。


1
不,WCF是完全独立于ASP.NET的,而且默认情况下不与ASP.NET运行时共享设置或任何内容。web.config设置对WCF没有任何影响。 - marc_s
之前在这里问过...请参考此帖子 - SliverNinja - MSFT
@SilverNinja:我看了那篇文章,但是它没有清楚地说明Servicehost设置和web.config属性之间的关系。唯一提到这种关系的人说他们不确定。 - SirPyros
1个回答

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模式下运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接