簡體   English   中英

添加發現WCF服務

[英]Add Discovery WCF service

我嘗試根據本教程將發現添加到我的WCF服務中: http : //msdn.microsoft.com/zh-cn/library/dd456783.aspx

這是我的主要:

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”。 該集合僅支持每種類型的一個實例。

您可以在添加新數組之前清理“行為”數組。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM