2011-04-26 39 views
12

還有沒有遇到過這個有相當多的谷歌搜索。在web.confg中設置WCF InstanceContextMode(每次調用,單個)

我知道我可以通過這樣裝飾類的名稱設置實例:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, 
       ConcurrencyMode = ConcurrencyMode.Multiple)] 

,但我可以在web.config文件中指定的?

我知道我可以指定web.config/app.config和這裏的數字有根據實例模式上下文節流(最大併發用戶等) - 但如何指定模式(最有可能的行爲部分app.config/web.config)?

最初我們正在爲Windows服務。現在我們正在使用WAS。 WAS是否有所作爲 - 例如。每個「每次調用」請求仍然會作爲流水線操作獲得它自己的「服務器」?

感謝

回答

0

您不能配置InstanceContextMode和ConcurrencyMode在配置文件,建立在WCF的限制,我相信MS有他們的理由。

關於在WAS中託管,如果您有一個帶有IIS 7/7.5的Web服務器,建議您使用WAS託管您的服務,因爲您可以使用IIS管理來管理您的服務,並從中獲得大量內置功能。

10

在web.config中不能更改InstanceContextModeConcurrencyMode與開箱即用的功能,但你可以寫你的自定義擴展(行爲或習慣ServiceHost + ServiceHostFactory +配置部分)做到這一點。 Here is the example如何更改InstanceContextMode而不在服務類的屬性中定義它。

WAS中的處理過程是相同的 - 每種服務類型都有其自己的服務主機,並且每個請求都在其自己的線程中處理。

1

根據以前的答案,你不能沒有一點工作就做到這一點。我最近不得不爲最近的客戶做這件事,而且我已經在這裏記錄下來。我還提供了一個驗證程序,以便在未配置您希望的服務時允許服務啓動。詳情在這裏changing-wcf-concurrency-programatically

相關問題