“服务无法激活,因为它需要asp网络兼容性”,但我需要它来进行模拟

时间:2011-03-03 12:17:13

标签: c# asp.net wcf iis-7 impersonation

我昨天发布了一个关于如何使用WCF服务启用模拟的问题:WCF service not impersonating specified user in config?

我启用了aspnetCompatibilityMode但是当我更新我的服务代理时,它说“服务无法激活,因为它需要asp网络兼容性”。我不完全确定这意味着什么。如果我将设置更改为AspNetCompatibilityRequirementsMode.Allowed,则不会启用模拟。我尝试在web.config和class属性中启用该设置。

如果不设置我的服务的应用程序池以我需要的用户身份运行,有没有办法解决这个问题?感谢。

1 个答案:

答案 0 :(得分:14)

您必须在托管服务的网站的web.config中启用AspNetCompatibility:

<system.serviceModel>
  ...
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>

因为您要使服务实现依赖于ASP.NET,所以应该使用以下命令标记服务类:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

AspNetCompatibilityRequirements.RequirementMode的默认值为NotAllowed,因此这很可能是您例外的原因。