WCF @ServiceHost 调试=“true”但 web.config 编译=“假”

发布于 2024-12-19 07:18:42 字数 126 浏览 2 评论 0原文

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

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

谢谢。

I have been looking in the MSDN docs but have not found a concrete answer.

Does the Debug property in @ServiceHost override the Web.config's compilation attribute or does the the web.config attribute override all?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雾里花 2024-12-26 07:18:42

根据: 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模式运行。

According to: http://msdn.microsoft.com/en-us/library/aa702682.aspx

The ASP.NET HTTP runtime handles ASP.NET requests but does not participate in the processing of requests destined for WCF services, even though these services are hosted in the same AppDomain as is the ASP.NET content. Instead, the WCF Service Model intercepts messages addressed to WCF services and routes them through the WCF transport/channel stack.

Unless you are running your services in WCF’s ASP.NET compatibility mode. In that case...

Unlike the default side-by-side configuration, where the WCF hosting infrastructure intercepts WCF messages and routes them out of the HTTP pipeline, WCF services running in ASP.NET Compatibility Mode participate fully in the ASP.NET HTTP request lifecycle. In compatibility mode, WCF services use the HTTP pipeline through an IHttpHandler implementation, similar to the way requests for ASPX pages and ASMX Web services are handled.

If we accept this assertion than we know that configuration inheritance should be respected.

If you wanted to be sure you could probably set up a test...

WCF services running in ASP.NET Compatibility Mode can access HttpContext.Current and its associated state. That means that you could interrogate the IsDebuggingEnabled property to see if you are in debug mode. You could also use some compiler directives like #if DEBUG to see if a block of code is reached.

I'd be very curious to hear what the ultimate verdict is. I think the key to this questions is whether or not this is a WCF service that is hosted in IIS and whether or not it is running in AspCompatibility mode.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文