我們的軟件使用了很多的WebService通過如何自ChannelFactory
sc = new MyServiceSoapClient()
調用這個構造器讀取 的EndpointAddress和Winword.exe.config 綁定和行爲(這是因爲出來的軟件是WINWORD Addin)
但客戶要求我們不要觸摸Winword.exe.config文件。
所以我們改變了我們的策略,從ChannelFactory 創建一個頻道,因爲在這種情況下我們可以使用任何我們喜歡的「.config」文件。
不幸的是,我們從ChannelFactory獲得的頻道是「MyServiceSoap」,但它不是「MyServiceSoapClient」。
我們不想在創建的頻道做每個Web服務調用 ,因爲這將意味着我們重新實現非常多的電話是這樣的:
創建一個請求對象
調用WebService方法
從響應對象讀取結果。
,所以我們試圖實例化的MyServiceSoapClient這樣:
sc = new MyServiceSoapClient(chfact.Endpoint.Binding, chfact.Endpoint.Address)
這個工作得很好,我們終於得到了我們的SoapClient的任何「的.config」文件的,我們並沒有根據Winword.exe.config文件。
但由於安全原因,客戶添加了一些行爲到配置文件。
好,肯定的ChannelFactory讀取配置文件的行爲,但沒有像這樣沒有構造:
sc = new MyServiceSoapClient(Binding, Address, Behavior)
,所以我們無法從現有的MyServiceSoap通道完全有效的MyServiceSoapClient。
如果我們使用它的默認構造函數創建了MyServiceSoapClient,那麼行爲就可以正常工作 - 但這時客戶需要配置Winword.exe.config他拒絕做的事情。
這也是不可能的強制轉換是這樣的:
sc=(MyServiceSoapClient)channel;
因爲信道是MyServiceSoap接口。
問題:
有什麼方法來創建從MyServiceSoap通道或者從一個的ChannelFactory MyServiceSoapClient?
或者它可以用一些複雜的類型鑄造嗎?
許多在此先感謝
你,傑拉德
哎呀 - soory,我不太清楚。 實際上客戶根本不想擁有任何Winword.exe.config文件。 –