65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2012 年 2 月 2 日

CPOL

3分钟阅读

viewsIcon

31207

这篇文章是关于 WCF 4.5 中 ASP.NET 兼容模式默认设置的更改。

这是 WCF 4.5 系列文章中的第八篇。 本文延续了之前关于 Web 托管功能的文章。 本文是关于 WCF 4.5 中 ASP.NET 兼容模式默认设置的更改。

之前的文章

  1. WCF 4.5 有什么新内容?让我们从 WCF 配置开始
  2. WCF 4.5 有什么新内容?单个 WSDL 文件
  3. WCF 4.5 有什么新内容?配置文件中的工具提示和智能感知
  4. WCF 4.5 有什么新内容?配置验证
  5. WCF 4.5 有什么新内容?IIS 中单个端点支持多种身份验证
  6. WCF 4.5 有什么新内容?IIS 的自动 HTTPS 端点
  7. WCF 4.5 中的新功能? BasicHttpsBinding

通常情况下,在 IIS 下托管的 WCF 服务与 ASP.NET 并行工作——它们共享一些管道,它们具有相同的应用程序域,但在涉及 HTTP 上下文(授权、上下文、会话等)时,它们彼此独立工作。 这是 WCF 的默认行为。

但是,您可以更改 WCF 的默认行为并将其设置为 ASP.NET 兼容模式——这允许 WCF 和 ASP.NET 共享大部分管道,并具有相同的 HTTP 上下文。 这有一些优点和一些缺点(例如 ASP.NET 会话和阻塞 WCF 调用的问题)。

要使 WCF 使用 ASP.NET 兼容模式,您需要进行以下两项更改

  1. 在您的 web.config 中为托管环境启用 ASP.NET 兼容模式
    <system.serviceModel>
            <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />    
    </system.serviceModel>
  2. 通过添加 AspNetCompatibilityRequirements 属性,将您的每个服务设置为支持兼容模式。
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

您可以在 MSDN 上阅读更多关于 WCF 和 ASP.NET 的信息。

那么 WCF 4.5 中有什么变化呢?

在 WCF 4.5 中,WCF 的默认行为是自动支持 ASP.NET 兼容模式。 这是通过以下更改实现的

  1. 在 WCF 服务应用程序项目模板中,aspNetCompatibilityEnabled 属性已添加到 serviceHostingEnvironment 元素,并且默认设置为 true
  2. AspNetCompatibilityRequirements 属性的默认值已从 NotAllowed 更改为 Allowed。 如果没有这个更改的默认值,您将需要手动将该属性添加到每个新服务。 这在属性的文档中很明显

WCF 4 - http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=VS.100).aspx

WCF 4.5 - http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.requirementsmode(v=VS.110).aspx

如果您需要在您的 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 日) 的 会议

© . All rights reserved.