WCF wsHttpBinding:避免多个“;“问题”;使用wsHttpBinding调用web服务时调用

WCF wsHttpBinding:避免多个“;“问题”;使用wsHttpBinding调用web服务时调用,wcf,web-services,wcf-binding,wshttpbinding,Wcf,Web Services,Wcf Binding,Wshttpbinding,我正在使用wsHttpBinding调用WCF web服务。当我查看Fiddler2时,我看到在调用我的实际OperationContract之前对服务器的多次调用 从中,我了解了这些服务呼叫在做什么 但是,我想知道在第一次成功的服务呼叫之后,是否有办法避免这些呼叫。 在我的应用程序中,web服务被频繁调用,因此每次对web服务操作的实际调用将不接受3-4个额外调用。正如您所知,发生的情况是WCF协商一个密钥。更多细节 您有几个选择: 将negotiateServerCredential和es

我正在使用
wsHttpBinding
调用WCF web服务。当我查看Fiddler2时,我看到在调用我的实际
OperationContract
之前对服务器的多次调用

从中,我了解了这些服务呼叫在做什么

但是,我想知道在第一次成功的服务呼叫之后,是否有办法避免这些呼叫。


在我的应用程序中,web服务被频繁调用,因此每次对web服务操作的实际调用将不接受3-4个额外调用。

正如您所知,发生的情况是WCF协商一个密钥。更多细节

您有几个选择:

  • 将negotiateServerCredential和establishSecurityContext设置为false(这将要求客户端将服务器证书设置为带外)
  • 更改为其他安全机制(用户名验证或SSL传输)
  • 保持现状。一旦协商确定,就不会再打额外的电话了。它们在每一代代理中发生一次

没有办法缩短谈判过程。它由几个消息交换组成,因为这是WS-Trust协议。

我选择了最后一个选项。我创建代理类的实例,并将其重新用于所有后续服务调用,直到
InnerChannel
进入
Closed
Faulted
状态。代理的
InnerChannel
公开通道处于关闭或故障状态时引发的事件。我订阅这些事件并在事件处理程序中重新创建代理实例。