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