2013-03-04 65 views
1

我希望能夠在Windows Phone 8應用程序中使用WCF服務端點。在Windows Phone 8中以編程方式使用WCF服務

在谷歌搜索只顯示我,我不得不右鍵點擊WP8項目,選擇「添加服務參考」......在我的情況下,這不是一個可行的解決方案。

  • 我希望能夠消耗WCF服務我的Windows Phone 8應用裏面,編程

  • 我在哪裏可以在Windows Phone 8應用程序中定義我的客戶端端點證書?

想象一下,我想做出一款Windows Phone 8應用程序,它應該能夠連接到託管在其他設備上的WCF服務,即一臺電腦。然後,WP用戶需要輸入該計算機的主機名,以便能夠連接到WCF服務。

+0

你能詳細說明「baaah!」嗎? ? – Guillaume 2013-03-04 14:21:57

+0

我詳細闡述了 – KristianB 2013-03-04 14:23:48

+0

好的,但是爲什麼?你想做什麼,代理生成器不能正確處理? – Guillaume 2013-03-04 14:28:25

回答

1

當您添加服務引用時,您的WP8項目會自動生成包裝WCF服務的代理類。然後你的代碼使用這個代理類。

這樣做是手動創建的代理類,相信我的另一種方法,你想,如果你能避免這個...

+0

想象一下,我想製作一個Windows Phone 8應用程序,它應該能夠連接到WCF託管在另一臺設備(即計算機)上的服務。然後,WP用戶需要輸入該計算機的主機名,以便能夠連接到WCF服務。 – KristianB 2013-03-04 14:29:30

+0

在正常的應用程序中,主機名存儲在** app.config **中。我相信你可以覆蓋在那裏讀取的主機名,並使用你從用戶手動請求的主機名。 – 2013-03-04 14:39:56

2

我建議你使用「添加服務引用」生成代理類。 DTO和客戶端代理將自動生成。您將受益於生產力,類型安全性和名稱檢查的巨大提升。

然後,您可以在運行時使用適當的構造函數指定url。例如:

private MyServiceClient GetMyServiceClient(string url) 
{ 
    Uri uri = new Uri(url); 
    BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None); 
    EndpointAddress address = new EndpointAddress(uri); 
    MyServiceClient client = new MyServiceClient(binding, address); 
    return client; 
} 

(MySericeClient是生成的代理)

的.config東西是可選的,你可以將其刪除。

0
  1. 由Add Service Reference生成的代理客戶端類只有在使用其無參數構造函數時纔會使用配置中的主機名(端點地址)。當然您可以在運行時手動指定端點地址。
  2. 您可以創建服務合同可移植類庫並在客戶端和服務器之間共享。那麼你不必生成代理類,但你使用ChannelFactory API:http://www.c-sharpcorner.com/UploadFile/ff2f08/channel-factory-in-wcf/
相關問題