4

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

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

谢谢。

4

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

于 2011-12-02T22:16:27.940 回答