我有一个控制台应用程序客户端,它与另一台服务器上的控制台应用程序托管的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;
然后我运行我的客户端并收到错误:
服务器没有提供有意义的回复;这可能是由于合同不匹配,会话过早关闭或内部服务器错误造成的。
我需要对客户端配置做些什么吗?
答案 0 :(得分:0)
可能是您的服务器设置与合同不匹配。
在服务器端:
我的猜测是你错过了最后一个。
答案 1 :(得分:0)
我怀疑wcf方法调用会在服务器端触发异常。您是否有适当的基础设施来捕获服务器端异常或有效负载?如果没有,那么使用wcf trace logging之类的东西来记录流量。
这应该会给你一个更有意义的错误。
如果您可以将此问题添加到您的问题中,希望我们可以看出导致问题的原因。