2013-10-23 94 views
1

我試圖按照本教程以發現添加到我的WCF服務:http://msdn.microsoft.com/en-us/library/dd456783.aspx添加發現WCF服務

這是我的主:

static void Main(string[] args) 
{ 
    // Create a ServiceHost for the CalculatorService type. 
    using (ServiceHost serviceHost = new ServiceHost(typeof(MySampleWCFService))) 
    { 
     // Add a ServiceDiscoveryBehavior 
     serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior()); 

     // ... 
     // Add ServiceDiscoveryBehavior 
     //serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior()); 

     // Add a UdpDiscoveryEndpoint 
     serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint()); 

     Uri uri = new Uri("http://" + "10.161.150.250" + ":8733/MySampleWCFService"); 
     BasicHttpBinding binding = new BasicHttpBinding(); 
     EndpointAddress endpoint = new EndpointAddress(uri); 

     WCFServiceHostingInWinService.MySampleWCFService service = new MySampleWCFService(); 
     // Send to my service 2 numbers and received their value 
     Console.WriteLine(service.Add(11, 12)); 
     EndpointAddress eee = FindCalculatorServiceAddress(); 
     Console.ReadLine(); 
    } 
} 

FindCalculatorServiceAddress方法:

static EndpointAddress FindCalculatorServiceAddress() 
    { 
     // Create DiscoveryClient 
     DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint()); 

     // Find ICalculatorService endpoints    
     FindResponse findResponse = discoveryClient.Find(new FindCriteria(typeof(IMySampleWCFService))); 

     if (findResponse.Endpoints.Count > 0) 
     { 
      return findResponse.Endpoints[0].Address; 
     } 
     else 
     { 
      return null; 
     } 
    } 

,並得到一個錯誤在:

// Add ServiceDiscoveryBehavior 
serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior()); 

該值無法添加到集合中,因爲該集合已包含相同類型的項目:'System.ServiceModel.Discovery.ServiceDiscoveryBehavior'。該集合僅支持每種類型的一個實例。

回答

0

在添加新行爲之前,您可以清理行爲數組。

// Add ServiceDiscoveryBehavior 
serviceHost.Description.Behaviors.RemoveAll<ClientCredentials>(); 
serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior()); 
+0

同樣的錯誤,我甚至不相信,我的主要代碼是OK,從URI URI開始= ...工作正常,但之前的代碼需要來順序? – user2214609