2013-08-27 59 views
0

我正在使用wsHttpBinding來調用WCF Web服務。當我查看Fiddler2時,在調用我的實際OperationContract之前,我看到了多個對服務器的調用。WCF wsHttpBinding:使用wsHttpBinding調用Web服務時避免多個「ISSUE」調用

this post我明白這些服務調用正在做什麼。

但是,我想知道在第一次成功的服務呼叫後是否有任何方法可以避免這些呼叫。

在我的應用程序中,Web服務被頻繁調用,因此每個實際調用Web服務操作的3-4個額外調用都不會被接受。

回答

1

正如你所想的那樣,WCF會爲一個密鑰進行協商。更多詳情in here

您有幾種選擇:

  • 集negotiateServerCredential和establishSecurityContext爲假(這需要客戶擁有服務器證書帶外)
  • 變化到不同的安全機制(用戶名AUTH ,或者使用SSL進行傳輸)
  • 留待當前情況。一旦談判成立,不再有額外的電話。他們每代代理髮生一次。

沒有辦法使協商過程更短。它由多個消息交換組成,因爲這是WS-Trust協議。

+0

我選擇了最後一個選項。我創建代理類的實例,並將其用於所有後續服務調用,直到InnerChannel進入「Closed」或「Faulted」狀態。代理的'InnerChannel'暴露了當通道處於關閉或故障狀態時引發的事件。我訂閱這些事件並在事件處理程序中重新創建代理實例。 – Learner

相關問題