Nasıl yapılır: WCF Hizmetini ASP.NET Web Hizmeti İstemcileriyle Birlikte Çalışmak için Yapılandırma

Windows Communication Foundation (WCF) hizmet uç noktasını ASP.NET Web hizmeti istemcileri ile birlikte çalışabilecek şekilde yapılandırmak için, hizmet uç noktanızın bağlama türü olarak türünü kullanın System.ServiceModel.BasicHttpBinding .

İsteğe bağlı olarak bağlamada HTTPS ve aktarım düzeyi istemci kimlik doğrulaması desteğini etkinleştirebilirsiniz. ASP.NET Web hizmeti istemcileri MTOM ileti kodlamasını BasicHttpBinding.MessageEncoding desteklemez, bu nedenle özelliği varsayılan değeri (olan WSMessageEncoding.Text) olarak bırakılmalıdır. ASP.NET Web Hizmeti istemcileri WS-Security'yi desteklemez, bu nedenle BasicHttpBinding.Security olarak ayarlanmalıdır Transport.

WcF hizmetinin meta verilerini ASP.NET Web hizmeti proxy oluşturma araçları (web hizmetleri açıklama dil aracı (Wsdl.exe), Web Hizmetleri Bulma Aracı (Disco.exe) ve Visual Studio'daki Web Başvurusu Ekle özelliği) için kullanılabilir hale getirmek için http/GET meta veri uç noktasını kullanıma sunmalısınız.

Koda uç nokta ekleme

  1. Yeni BasicHttpBinding örnek oluşturma

  2. İsteğe bağlı olarak, bağlamanın güvenlik modunu olarak ayarlayarak bu hizmet uç noktası bağlaması Transportiçin aktarım güvenliğini etkinleştirin. Ayrıntılar için bkz . Aktarım Güvenliği.

  3. Yeni oluşturduğunuz bağlama örneğini kullanarak hizmet konağınıza yeni bir uygulama uç noktası ekleyin. Koda hizmet uç noktası ekleme hakkında ayrıntılı bilgi için bkz . Nasıl yapılır: Kodda Hizmet Uç Noktası Oluşturma.

  4. Hizmetiniz için bir HTTP/GET meta veri uç noktasını etkinleştirin. Ayrıntılar için bkz . How to: Publish Metadata for a Service Using Code.

Yapılandırma dosyasına uç nokta ekleme

  1. Yeni BasicHttpBinding bir bağlama yapılandırması oluşturun. Ayrıntılar için bkz . Nasıl yapılır: Yapılandırmada Hizmet Bağlaması Belirtme.

  2. İsteğe bağlı olarak bağlama için güvenlik modunu olarak ayarlayarak bu hizmet uç noktası bağlama yapılandırması için Transportaktarım güvenliğini etkinleştirin. Ayrıntılar için bkz . Aktarım Güvenliği.

  3. Az önce oluşturduğunuz bağlama yapılandırmasını kullanarak hizmetiniz için yeni bir uygulama uç noktası yapılandırın. Yapılandırma dosyasına hizmet uç noktası ekleme hakkında ayrıntılı bilgi için bkz . Nasıl yapılır: Yapılandırmada Hizmet Uç Noktası Oluşturma.

  4. Hizmetiniz için bir HTTP/GET meta veri uç noktasını etkinleştirin. Ayrıntılar için bkz . How to: Publish Metadata for a Service Using a Configuration File.

Örnek

Aşağıdaki örnek kod, kodda ve alternatif olarak yapılandırma dosyalarında ASP.NET Web hizmeti istemcileri ile uyumlu bir WCF uç noktasının nasıl ekleneceğini gösterir.

using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;

[ServiceContract]
public interface IEcho
{
    [OperationContract]
    string Echo(string s);
}

public class MyService : IEcho
{
    public string Echo(string s)
    {
        return s;
    }
}

class Program
{
    static void Main(string[] args)
    {
        string baseAddress = "http://localhost:8080/wcfselfhost/";
        ServiceHost host = new ServiceHost(typeof(MyService), new Uri(baseAddress));

        // Create a BasicHttpBinding instance
        BasicHttpBinding binding = new BasicHttpBinding();

        // Add a service endpoint using the created binding
        host.AddServiceEndpoint(typeof(IEcho), binding, "echo1");

        host.Open();
        Console.WriteLine("Service listening on {0} . . .", baseAddress);
        Console.ReadLine();
        host.Close();
    }
}

Imports System.Collections.Generic
Imports System.Text
Imports System.ServiceModel
Imports System.ServiceModel.Description

<ServiceContract()> _
Public Interface IEcho

    <OperationContract()> _
    Function Echo(ByVal s As String) As String

End Interface

Public Class MyService
    Implements IEcho

    Public Function Echo(ByVal s As String) As String Implements IEcho.Echo
        Return s
    End Function

End Class

Friend Class Program

    Shared Sub Main(ByVal args() As String)
        Dim baseAddress = "http://localhost:8080/wcfselfhost/"
        Dim host As New ServiceHost(GetType(MyService), _
                                    New Uri(baseAddress))

        ' Add a service endpoint using the created binding
        With host
            .AddServiceEndpoint(GetType(IEcho), _
                                New BasicHttpBinding(), _
                                "echo1")
            .Open()
            Console.WriteLine("Service listening on {0} . . .", _
                              baseAddress)
            Console.ReadLine()
            .Close()
        End With
    End Sub
End Class
<configuration>
  <system.serviceModel>
    <services>
      <service name="MyService" behaviorConfiguration="HttpGetMetadata">
        <endpoint address="echo2" contract="IEcho" binding="basicHttpBinding" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="HttpGetMetadata">
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Ayrıca bkz.