System.Data.OracleClient上的WCF模拟级别错误

System.Data.OracleClient上的WCF模拟级别错误,wcf,impersonation,Wcf,Impersonation,我目前有一个WCF服务在IIS7中运行,我在每个公共web方法上添加了以下模拟: [OperationBehavior(Impersonation = ImpersonationOption.Required)] public void TestMethod(){} 当我从测试客户机应用程序调用此方法时,会出现以下错误: 无法加载文件或程序集“System.Data.OracleClient,Version=4.0.0.0,Culture=neutral,PublicKeyToken=waer

我目前有一个WCF服务在IIS7中运行,我在每个公共web方法上添加了以下模拟:

[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public void TestMethod(){}
当我从测试客户机应用程序调用此方法时,会出现以下错误:

无法加载文件或程序集“System.Data.OracleClient,Version=4.0.0.0,Culture=neutral,PublicKeyToken=waeraewrar”或其依赖项之一。未提供所需的模拟级别,或者提供的模拟级别无效。

我目前正在使用Microsoft企业库3.1和.Net 4.0

示例代码:

WcfService client = new WcfService();
client.TestMethod();

尝试配置客户端以允许模拟级别的模拟。例如:

<system.serviceModel>
    <client>
      <endpoint address="http://xxxxx/Services/xxService.svc"
                binding="wsHttpBinding"
                contract="IServiceContract"
                behaviorConfiguration = "ImpersonationBehavior" />
    </client>
      <behaviors>
          <endpointBehaviors>
               <behavior name="ImpersonationBehavior">
                   <clientCredentials>
                       <windows allowedImpersonationLevel = "Impersonation" />
                   </clientCredentials>
               </behavior>
          <endpointBehaviors>
       </behaviors>
</system.serviceModel>


有关模拟和委派的详细信息,请参阅。

错误消息表明问题在于模拟用户无权访问文件系统中的
System.Data.OracleClient
程序集DLL,因此无法加载它

无法使
System.Data.OracleClient
程序集首先由需要模拟的服务方法之外的代码加载。。。i、 e.使用IIS工作进程标识运行代码。例如,在您的服务实例构造函数中


一旦程序集加载到服务的AppDomain中,在模拟下运行的服务方法就不需要再这样做了

是否需要为所有客户端配置模拟级别?如何将用户凭据发送到WCF服务?这是soap消息的一部分吗?您的客户机不应该真正为服务提供强大的“委托”模拟级别,除非它确实需要并且相信服务不会滥用它。原则上,只有当服务实现需要使用远程客户端的身份访问不同盒子上的某些资源时,才需要“委托”。此解决方案确实有效。此外,如果以编程方式设置AllowedImpersonationLevel,它也可以工作。但是用户名和密码是否在soap消息中发送?如果需要在web配置中或以编程方式设置模拟级别;Java应用程序将如何使用WCF服务?@arc1880:谢谢你让我知道它是有效的。只是好奇-如果您将模拟级别设置为“模拟”,它仍然有效吗?如果是这样,你应该这样做(因为克里斯·迪克森说的原因)。我不确定我是否有知识正确回答你的另一个问题。我认为这是一个好问题-你应该发布一个单独的stackoverflow问题。@Andrew Shepherd:是的,如果模拟级别设置为“模拟”,它确实有效。