我有一個Web服務將被某些應用程序(當前的Web站點)使用。WCF服務調用在每次調用中都包含相同的信息
這些調用幾乎都是特定於某個客戶,但仍然是相同的。所以一個調用可能是getAllFoo(),但我需要一些參數來說明Foo來自哪個客戶端。
如果我只是將一個標準參數添加到所有調用中,它會很快變得很麻煩,所以我希望能夠幹一點DRY和自動。一些可能包含在所有服務調用中的東西。
IDispatchMessageInspector對我來說是正確的嗎?什麼樣的信息可以包括,我可以訪問方法內的信息?
我應該爲呼叫創建某種屬性嗎?
如果任何人都可以指出我的解決方案,這將是偉大的。
編輯
另一種解決方案,我想了。
如果在特定客戶端的服務調用發生在客戶端,那麼它將在instanceCreation中知道,因此我可以使用已知的客戶端實例化ServiceClient。
我可以以某種方式爲ClientBase<>
擴展器使用此解決方案。
假設我正在爲Domain1服務(讓我們稱客戶端域不會將其與服務客戶端/客戶端混淆)我創建一個InformationProvider
消費者端,它具有ClientBase<IInformationService>
字段。我確保DomainName(domain1)被設置爲構建,所以我可以在實例化ClientBase<IInformationService>
時做同樣的事情,所以它讓服務知道我要求的域名。
我只是還在學習WCF
所以我不知道如何做到這一點。
我之前遇到過問題,不做事幹,我真的不想把這個額外的參數都添加到每一個OperationContract,然後再給我做的每一個調用。我將主要維護這些代碼,並創建消耗它的客戶端。感謝您的輸入。 –
我認爲這是正確的做法,但我會給你另一個答案,然後。 –
@ Kirk Hang on sec。我要添加更多信息。 –