我有一个在IIS 7.5下托管的WCF服务(MyService.svc)。 我的.svc与Web App本身位于同一个虚拟目录下。 我试图让我的一些服务操作要求用户模仿:
[OperationBehavior(Impersonation = ImpersonationOption.Required)]
我使用了basicHttpBinding:
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm"/>
</security>
发布后,我转到http:///MyService.svc。 这是当我收到以下错误时:
The contract operation 'HelloWorld' requires Windows identity for automatic impersonation. A Windows identity that represents the caller is not provided by binding ('BasicHttpBinding','http://tempuri.org/') for contract ('IMyService','http://MyService'.
*更新/修复* 我发现了我的问题。我没有在web.config中提供我的服务名称的命名空间组件。这使得整个事情变得很棒。
<services>
<service name="**MyNamespace**.MyService" behaviorConfiguration="MyServiceBehavior">
...
</service>
</services>
答案 0 :(得分:0)
根据错误消息,听起来您在创建代理时未提供凭据?我没有在WCF中进行模拟,但我建议考虑提供凭据(通过配置文件或以编程方式创建代理)。