使用(Impersonation = ImpersonationOption.Required)在IIS中托管WCF

时间:2011-07-08 04:52:36

标签: wcf iis-7.5 impersonation

我有一个在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>

1 个答案:

答案 0 :(得分:0)

根据错误消息,听起来您在创建代理时未提供凭据?我没有在WCF中进行模拟,但我建议考虑提供凭据(通过配置文件或以编程方式创建代理)。