Nasıl yapılır: Bağlama Meta Verilerini Dinamik Olarak Almak için MetadataResolver Kullanma

Bu konuda, bağlama meta verilerini dinamik olarak almak için sınıfının nasıl kullanılacağı MetadataResolver gösterilmektedir.

Bağlama meta verilerini dinamik olarak almak için

  1. Meta veri uç noktasının adresiyle bir EndpointAddress nesne oluşturun.

    EndpointAddress metaAddress  
      = new EndpointAddress(new Uri("http://localhost:8080/SampleService/mex"));  
    
  2. Çağrısı Resolve(Type, EndpointAddress), hizmet türünü ve meta veri uç noktası adresini geçirir. Bu, belirtilen sözleşmeyi uygulayan bir uç nokta koleksiyonu döndürür. Meta verilerden yalnızca bağlama bilgileri içeri aktarılır; sözleşme bilgileri içeri aktarılmaz. Bunun yerine sağlanan sözleşme kullanılır.

    ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient),metaAddress);  
    
  3. Ardından, ihtiyacınız olan bağlama bilgilerini ayıklamak için hizmet uç noktaları koleksiyonunda yineleme yapabilirsiniz. Aşağıdaki kod uç noktalar arasında yinelenir, geçerli uç noktayla ilişkili bağlamayı ve adresi geçiren bir hizmet istemci nesnesi oluşturur ve ardından hizmette bir yöntem çağırır.

    foreach (ServiceEndpoint point in endpoints)  
    {  
       if (point != null)  
       {  
          // Create a new wcfClient using retrieved endpoints.  
          using (wcfClient = new SampleServiceClient(point.Binding, point.Address))  
          {  
             Console.WriteLine(  
               wcfClient.SampleMethod("Client used the "  
               + point.Address.ToString() + " address."));  
          }  
      }  
    }  
    

Ayrıca bkz.