【问题标题】:WCF: Client ImpersonationWCF:客户端模拟
【发布时间】:2009-08-11 07:56:19
【问题描述】:

我有一个控制台应用程序客户端,它与由不同服务器上的控制台应用程序托管的 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;

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

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

还有什么我需要对客户端配置做的事情吗?

【问题讨论】:

    标签: c# .net asp.net wcf


    【解决方案1】:

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

    在服务器端:

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

    我猜你错过了最后一个。

    【讨论】:

    • @Tom 关于这一点,您是否在更改 OperationBehaviour 后重新编译了您的客户端?
    【解决方案2】:

    我怀疑 wcf 方法调用会在服务器端触发异常。您是否有任何基础设施来捕获服务器端异常或有效负载?如果没有,则使用类似 wcf 跟踪日志记录来记录流量。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多