2017-10-10

[ASP.NET] 使用 Channel Factory 動態連結 WCF

在使用 WCF 時,一般做法都是在專案上按右鍵  - Add - Service Reference,再將已知的 WCF URL 貼上就行。

但近日遇到需求,要將專案和 WCF 部屬在多個不同的客戶主機上,也就是相同的專案,但 WCF IP 是不同的,等於每部屬一台,專案上面的 Add Service Reference 就要重做一次,有一點點小麻煩。

於是 Google 了一下,找到方法能用程式動態實現 Add Service Reference 的方法,就是使用 Channel Factory

程式碼如下:
BasicHttpBinding myBinding = new BasicHttpBinding();

// IP 和 PORT 可記錄在 Web.Config,再動態讀出來即可
EndpointAddress myEndpoint = new EndpointAddress("http://[IP]:[Port]/WCFService.svc");

// IWCFService 是 WCF 的 Interface Class
ChannelFactory<IWCFService> myChannelFactory = new ChannelFactory<IWCFService>(myBinding, myEndpoint);

IWCFService instance = myChannelFactory.CreateChannel();

Console.WriteLine(instance.GetData());

myChannelFactory.Close();



參考來源:C# Corner

沒有留言:

張貼留言