<<serviceHostingEnvironment>>
此元素定义服务主机环境要为特定传输实例化的类型。如果此元素为空,则使用默认类型。
<system.serviceModel>
<<serviceHostingEnvironment>>
<serviceHostingEnvironment>
aspNetCompatibilityEnabled="Boolean"
minFreeMemoryPercentageToActivateService="Integer"
<baseAddressPrefixFilters>
<add prefix="string"/>
</baseAddressPrefixFilters>
<transportConfigurationTypes>
<add name="String"
transportConfigurationType="String" />
</transportConfigurationTypes>
</serviceHostingEnvironment>
属性和元素
属性
属性 | 说明 |
---|---|
aspNetCompatibilityEnabled |
一个布尔值,指示是否已为当前应用程序启用了 ASP.NET 兼容模式。默认值为 false。 当此属性设置为 true 时,对 Windows Communication Foundation (WCF) 服务的请求将流经 ASP.NET HTTP 管道,而通过非 HTTP 协议的通信将被禁止。有关更多信息,请参见 WCF Services and ASP.NET。 |
minFreeMemoryPercentageToActivateService |
一个整数,指定在可以激活 WCF 服务之前,系统应该具有的最小可用内存量。 警告 若将此属性连同 WCF 服务的 web.config 文件中的部分信任一起指定,会导致在该服务运行时发生 SecurityException。 |
子元素
元素 | 说明 |
---|---|
一个配置元素的集合,这些元素指定服务主机所使用的基址的前缀筛选器。 |
|
一个配置元素的集合,这些元素标识特定传输的类型。 |
父元素
元素 | 说明 |
---|---|
serviceModel |
所有 Windows Communication Foundation (WCF) 配置元素的根元素。 |
备注
默认情况下,WCF 服务和 ASP.NET 一起在寄宿应用程序域 (AppDomain) 中并行运行。即使 WCF 和 ASP.NET 可以在同一 AppDomain 中共存,但在默认情况下,ASP.NET HTTP 管道不会处理 WCF 请求。因此,WCF 服务不能使用 ASP.NET 应用程序平台的一些元素,其中包括
- ASP.NET File/URL 授权
- ASP.NET 模拟
- 基于 Cookie 的会话状态
- HttpContext.Current
- 通过自定义 HttpModule 获得的管道扩展性
如果要使 WCF 服务在 ASP.NET 上下文中正常工作并仅通过 HTTP 进行通信,则可以使用 WCF 的 ASP.NET 兼容模式。当 aspNetCompatibilityEnabled 属性在应用程序级别中设置为 true 时,此模式将启用。服务实现必须使用 AspNetCompatibilityRequirementsAttribute 类来声明其可以在兼容模式中运行。当启用此兼容模式时,
- ASP.NET File/URL 授权将在 WCF 授权之前强制执行。授权决定是基于请求的传输级标识的。消息级别的标识将被忽略。
- WCF 服务操作开始是在 ASP.NET 模拟上下文中执行的。如果为某个特定服务同时启用了 ASP.NET 模拟和 WCF 模拟,则将应用 WCF 模拟上下文。
- 可以通过 WCF 服务代码使用 HttpContext.Current,并且阻止服务公开非 HTTP 终结点。
- WCF 请求由 ASP.NET 管道处理。已配置为对传入请求执行操作的 HttpModule 也可以处理 WCF 请求。这些 HttpModule 可包括 ASP.NET 平台组件(如 SessionStateModule)以及自定义第三方模块。
示例
下面的代码示例演示如何启用 ASP 兼容模式。
代码
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
另请参见
参考
ServiceHostingEnvironmentSection
ServiceHostingEnvironment