调用wcf服务时出现模拟错误

调用wcf服务时出现模拟错误,wcf,Wcf,我开发了一个wcf服务。由于非.net客户端也会调用它,所以我使用了basichttpbinding。有些方法需要模拟。这是通过以下方式装饰webmethods实现的: [OperationBehavior(Impersonation = ImpersonationOption.Required)] 在我们的测试服务器上部署该服务后,调用该服务时出现了一个奇怪的错误: 无法加载文件或程序集“log4net,Version=1.2.10.0,Culture=neutral,PublicKeyT

我开发了一个wcf服务。由于非.net客户端也会调用它,所以我使用了basichttpbinding。有些方法需要模拟。这是通过以下方式装饰webmethods实现的:

 [OperationBehavior(Impersonation = ImpersonationOption.Required)]
在我们的测试服务器上部署该服务后,调用该服务时出现了一个奇怪的错误:

无法加载文件或程序集“log4net,Version=1.2.10.0,Culture=neutral,PublicKeyToken=1b44e1d426115821”或其依赖项之一。未提供所需的模拟级别,或者提供的模拟级别无效。(来自HRESULT的异常:0x80070542)

我得到这个错误与我调用服务的方式无关。当我通过wcfTestClient调用它时得到它,当我通过我编写的控制台应用程序调用它时得到它。(我将webservice作为web引用添加到此应用程序,以模拟非.net客户端的行为。)

有什么想法吗


PS:这是我的web服务的web.config:



看起来log4net库与该模拟级别不兼容。如果删除引用,它将起作用。

在WCF中,客户端必须明确允许模拟。在WCF客户端中,可通过以下方式向客户端代理添加行为:

<behaviors>
  <endpointBehaviors>
    <behavior name="myBehavior">
      <clientCredentials>
        <windows allowedImpersonationLevel="Impersonation" />
      </clientCredentials>
    </behavior>
  </endpointBehaviors>
</behaviors>
我希望必须为WcfTestClient配置此选项,因为默认模拟级别仅允许ID网络化

如果是ASMX代理,请确保您是


我的意见是,对于非.NET客户端使用的服务,windows身份验证不是一个好的选择(特别是如果你也指非windows的话)。

但我需要这个程序集。我必须记录服务器上发生的事情,log4net是“我们的”库。如果您需要使用该程序集,我建议使用另一种身份验证方法。我个人喜欢使用https上的基本身份验证。这很有帮助。在我将此行为添加到wcftestclient中的client.config之后,它就工作了。但现在我有另一种奇怪的行为。当我通过wcftestclient调用服务时(不允许显式模拟模拟),它会崩溃,并出现上述错误。从那一刻起,当通过控制台应用程序调用时,它也会崩溃,直到我再次重新启动服务。。。这怎么可能?
<behaviors>
  <endpointBehaviors>
    <behavior name="myBehavior">
      <clientCredentials>
        <windows allowedImpersonationLevel="Impersonation" />
      </clientCredentials>
    </behavior>
  </endpointBehaviors>
</behaviors>
proxy.ClientCredentials.Windows.AllowImpersonationLevel = TokenImpersonationLevel.Impersonation;