2015-05-29 69 views
0

我有一個WCF服務。它使用配置文件中的設置。 它包含一些通過http,net.tcp等工作的子服務。 我想創建一個方法,它將返回所有配置的端點url。 它將用於提供客戶端應用程序接收url字符串的可能性。如何枚舉端點url?

我如何在WCF服務中做到這一點?

+0

爲什麼沒有客戶端應用程序只是獲取服務元數據? –

+0

WCF服務內部有多個服務。另外,一些服務的設定很少(可能是http,net.tcp等)。獲取服務元數據需要知道其URL。我想提供一個RESTful方法,客戶端應用程序可以查詢並獲取所有端點地址,然後執行所需的操作。這是客戶端配置實用程序。至少它會顯示地址。 – Oleg

+0

*獲取服務元數據需要知道其URL。* - 暴露元數據的關鍵點是您希望其他人知道該URL。 –

回答

1

你可以嘗試這樣的事情:

private static List<Uri> GetClientsInfo() 
    { 
     var adressList = new List<Uri>(); 
     var clientSection = (ConfigurationManager.GetSection("system.serviceModel/client") as ClientSection); 
     if (clientSection != null) 
     { 
      foreach (ChannelEndpointElement endPoint in clientSection.Endpoints) 
      { 
       adressList.Add(endPoint.Address); 
      } 
     } 

     return adressList; 
    } 

您也可以使用「WebConfigurationManager」,而不是「ConfigurationManager中」(取決於您的應用型,更在這裏What's the difference between the WebConfigurationManager and the ConfigurationManager?