2011-07-21 56 views
0

serviceThrottling的服務屬性SessionMode.NotAllowed和maxConcurrentSessions可以與wshttpbinding同時使用。SessionMode.NotAllowed vs maxConcurrentSessions for wshttpbinding

這是否意味着它們可能指的是兩個不同的會話概念?

例如 SessionMode.NotAllowed =無狀態服務。
maxConcurrentSessions = max。並行(不同)安全協商。

編輯:
this answer to another question我已經認識到「WCF將檢查的app.config [maxConcurrentSessions]與屬性[SessionMode.NotAllowed]一致,並拒絕啓動服務,如果他們不相一致」。
當SessionMode.NotAllowed聲明並禁用會話的使用時,不應該WCF然後拒絕啓動服務,因爲與maxConcurrentSessions相矛盾的配置?

回答

1

SessionMode.NoAllowed說,合同必須在無狀態的方式

對於NetTcp這將防止服務起其固有的sessionful來實現,它的WSHttpBinding將打壓會議

maxConcurrentSessions不會有任何效果如果使用SessionMode.NotAllowed因爲不會有會話節流

WsHttpBinding的使用安全會話來支持它的會話,如果其可用的概念。如果它不可用,它將使用可靠的消息。如果兩者都不可用它不能支持會議

我寫了一個blog article這個東西而回

更新響應編輯

安全對話和會話是不一樣的東西。無論您是否有會話,都可以使用Secure Conversation。 WSHttpBinding支持會話的一種方式是使用安全對話的協商來定義會話。但是,如果您說SessionMode.NotAllowed,那麼WCF將根本沒有會話ID,也不支持會話 - 這並不意味着它不會使用安全對話

maxConcurrentSessions限制了最大併發會話數。如果關閉會話,然後會話數是零,所以總是會小於最大

+0

見我編輯的問題。我想要實現的是「沒有會話,沒有狀態」,但是:第一次呼叫只需要一次認證,然後保持這個安全連接。 – Gerard

+0

謝謝我回到了邏輯。 – Gerard