WCF 4.5 中的新功能? 更改 ASP.NET 兼容模式的默认设置





5.00/5 (2投票s)
这篇文章是关于 WCF 4.5 中 ASP.NET 兼容模式默认设置的更改。
这是 WCF 4.5 系列文章中的第八篇。 本文延续了之前关于 Web 托管功能的文章。 本文是关于 WCF 4.5 中 ASP.NET 兼容模式默认设置的更改。
之前的文章
- WCF 4.5 有什么新内容?让我们从 WCF 配置开始
- WCF 4.5 有什么新内容?单个 WSDL 文件
- WCF 4.5 有什么新内容?配置文件中的工具提示和智能感知
- WCF 4.5 有什么新内容?配置验证
- WCF 4.5 有什么新内容?IIS 中单个端点支持多种身份验证
- WCF 4.5 有什么新内容?IIS 的自动 HTTPS 端点
- WCF 4.5 中的新功能? BasicHttpsBinding
通常情况下,在 IIS 下托管的 WCF 服务与 ASP.NET 并行工作——它们共享一些管道,它们具有相同的应用程序域,但在涉及 HTTP 上下文(授权、上下文、会话等)时,它们彼此独立工作。 这是 WCF 的默认行为。
但是,您可以更改 WCF 的默认行为并将其设置为 ASP.NET 兼容模式——这允许 WCF 和 ASP.NET 共享大部分管道,并具有相同的 HTTP 上下文。 这有一些优点和一些缺点(例如 ASP.NET 会话和阻塞 WCF 调用的问题)。
要使 WCF 使用 ASP.NET 兼容模式,您需要进行以下两项更改
- 在您的 web.config 中为托管环境启用 ASP.NET 兼容模式
<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> </system.serviceModel>
- 通过添加
AspNetCompatibilityRequirements
属性,将您的每个服务设置为支持兼容模式。
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
您可以在 MSDN 上阅读更多关于 WCF 和 ASP.NET 的信息。
那么 WCF 4.5 中有什么变化呢?
在 WCF 4.5 中,WCF 的默认行为是自动支持 ASP.NET 兼容模式。 这是通过以下更改实现的
- 在 WCF 服务应用程序项目模板中,
aspNetCompatibilityEnabled
属性已添加到serviceHostingEnvironment
元素,并且默认设置为true
。 AspNetCompatibilityRequirements
属性的默认值已从NotAllowed
更改为Allowed
。 如果没有这个更改的默认值,您将需要手动将该属性添加到每个新服务。 这在属性的文档中很明显
如果您需要在您的 ASP.NET 应用程序和 WCF 服务之间共享关于 HTTP 上下文、会话或用户授权的信息,ASP.NET 兼容模式非常有用,但要注意在 WCF 和 ASP.NET 之间共享会话状态时发生的 并发问题。
在接下来的文章中,您将看到更多关于 ASP.NET 和 WCF 的内容,敬请期待。 您也可以在 Twitter (@IdoFlatow) 上关注我,以便在发布新文章后立即获取更新。
.NET 4.5 的 RTM 尚未发布,我假设你们中的许多人仍在适应 WCF 4。如果您想了解更多关于 WCF 4 的新功能,请来参加我在奥兰多 2011 年 Visual Studio Live! (12 月 5 日至 9 日) 的 会议。