WCF:客户端模拟

时间:2009-08-11 07:56:20

标签: c# .net asp.net wcf

我有一个控制台应用程序客户端,它与另一台服务器上的控制台应用程序托管的WCF服务进行通信。它使用带有安全模式=消息

的Windows身份验证

它可以正常工作,直到我更改服务以模拟客户端凭据。我要做的改变是:
1.将<serviceAuthorization impersonateCallerForAllOperations="true" />添加到服务行为
2.将[OperationBehavior(Impersonation = ImpersonationOption.Required)]添加到我的方法签名

然后我主持我的服务,它正常运行,一切都很好。

在我的客户端,我唯一要做的就是添加:

ChannelFactory<IService1> channel = new ChannelFactory<IService1>(binding, endPoint);
channel.Credentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;

然后我运行我的客户端并收到错误:

服务器没有提供有意义的回复;这可能是由于合同不匹配,会话过早关闭或内部服务器错误造成的。

我需要对客户端配置做些什么吗?

2 个答案:

答案 0 :(得分:0)

可能是您的服务器设置与合同不匹配。

在服务器端:

  • IIS是否设置为Windows身份验证?
  • web.config是否设置为Windows身份验证?
  • 将web.config设置为impersonate = true

我的猜测是你错过了最后一个。

答案 1 :(得分:0)

我怀疑wcf方法调用会在服务器端触发异常。您是否有适当的基础设施来捕获服务器端异常或有效负载?如果没有,那么使用wcf trace logging之类的东西来记录流量。

这应该会给你一个更有意义的错误。

如果您可以将此问题添加到您的问题中,希望我们可以看出导致问题的原因。