我在同一个 web.config 中有一个带有 ASP.NET 站点和 WCF 服务的 WebService。到目前为止,我可以通过设置在 WCF 服务中使用 ASP.NET 模拟
<system.web>
<compilation targetFramework="4.0" debug="false"/>
<!-- switch custom errors of-->
<identity impersonate="true"/>
<customErrors mode="Off"/>
</system.web>
但是,现在(出于其他原因-> ASP.NET 部分的无 Cookie 会话状态)我必须设置
aspNetCompatibilityEnabled="true"
选项为假。有了这个,我失去了对 WCF 服务的 ASP.NET 模拟。我的 WCF 服务之一需要对服务器上的 IO 操作进行模拟...我想知道如何通过直接在 WCF 服务配置上定义它来获得与以前相同的模拟。
我尝试过(不成功)是设置
[OperationBehavior(Impersonation = ImpersonationOption.Required)]
关于 WCF 服务中方法的实现,然后指定
<endpoint address="" binding="wsHttpBinding" contract="IService">
<identity>
<servicePrincipalName value="HOST/YourMachineName" />
<dns value="" />
</identity>
</endpoint>
在 web.config 中(显然我的服务具有正确的值),如http://msdn.microsoft.com/en-us/library/ff650591.aspx中所述。
但是,在此之后无法再调用 WCF 服务......它告诉我 WsHttpBinding 不为合同提供身份。
我错过了什么重要的东西吗?
编辑:错误信息的翻译:
: 合同操作“{0}”需要 Windows 身份才能自动模拟。代表调用者的 Windows 身份不是通过为合同 ('{3}'、'{4}' 的绑定 ('{1}'、'{2}') 提供的。
(原来的错误信息是德语...)