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

Rya*_*ers 5 c# asp.net impersonation wcf iis-7

我昨天发布了一个关于如何使用WCF服务启用模拟的问题:WCF服务没有模拟配置中的指定用户?

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

有没有办法绕过这个没有设置我的服务的应用程序池作为我需要的用户运行?谢谢.

Lad*_*nka 14

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

<system.serviceModel>
  ...
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)

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

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
Run Code Online (Sandbox Code Playgroud)

默认值AspNetCompatibilityRequirements.RequirementModeNotAllowed,这很可能是您的例外原因.