【发布时间】:2012-10-08 07:56:39
【问题描述】:
我在同一个 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}') 提供的。
(原来的错误信息是德语...)
【问题讨论】:
-
“不提供合同身份” - 请显示确切的错误消息。