【发布时间】:2011-01-23 10:32:29
【问题描述】:
我有一个托管在 Web 应用程序 (IIS) 中的 WCF 服务。我需要在wsHttp 上公开一个端点,在netTcp 上公开另一个端点。我在一个 IIS7 环境中,这使我可以托管非基于 HTTP 的服务。无论如何,当我使用浏览器浏览 .svc 文件时,出现错误:
该服务无法激活,因为它不支持 ASP.NET 兼容性。此应用程序已启用 ASP.NET 兼容性
通过谷歌搜索,我意识到 WCF 以两种模式运行 - 混合和 ASP.NET 兼容。当我应用属性时
[AspNetCompatibilityRequirements(
RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
但是,一旦我将此属性应用于服务合同实现,我似乎无法使用非 HTTP 绑定。
我该如何设置:
- 我可以支持非 HTTP 端点
- 我可以在 Web 应用上托管服务
- 我没有创建多个服务,一个打开了 aspnet 兼容性,另一个关闭了
【问题讨论】:
-
您使用的是 ASP.NET 功能吗?如果有,是哪一个?可以去掉吗?
-
还没有 - 到目前为止(不确定我将来是否会使用会话或上下文)。你是说如果我不使用任何 asp.net 功能,我应该能够关闭 AspNetCompatibility 并仍然将其托管在 Web 主机中?
-
为什么不使用 Windows 服务公开服务?我认为除非你使用 WAS,否则第一个和第二个是不可能做到的。
-
我想知道他们是如何在 StockTrader 示例应用程序中做到这一点的。我相信它们支持托管在 Web 应用(不是 WAS)上的服务的 HTTP 和非 HTTP 绑定
-
好的,我在 Appfabric 上托管了 WCF 服务。我仍然无法关闭 AspNetCompatibilityRequirements