Sdílet prostřednictvím


Postupy: Konfigurace služby WCF pro spolupráci s klienty webové služby ASP.NET

Pokud chcete nakonfigurovat koncový bod služby WCF (Windows Communication Foundation) tak, aby byl interoperabilní s klienty webové služby ASP.NET, použijte System.ServiceModel.BasicHttpBinding typ vazby pro koncový bod služby.

Volitelně můžete u vazby povolit podporu ověřování klientů na úrovni protokolu HTTPS a přenosu. ASP.NET klienti webové služby nepodporují kódování zpráv MTOM, takže vlastnost BasicHttpBinding.MessageEncoding by měla být ponechána jako výchozí hodnota, což je WSMessageEncoding.Text. ASP.NET klienti webové služby nepodporují zabezpečení WS-Security, takže BasicHttpBinding.Security by měla být nastavena na Transport.

Chcete-li zpřístupnit metadata služby WCF pro nástroje ASP.NET pro generování proxy webových služeb (tj. nástroj Web Services Description Language Tool (Wsdl.exe), nástroj zjišťování webových služeb (Disco.exe)a funkci Přidat webovou referenci ve Visual Studio), měli byste zveřejnit koncový bod metadat HTTP/GET.

Přidání koncového bodu v kódu

  1. Vytvoření nové instance BasicHttpBinding

  2. Nastavením režimu zabezpečení na Transportmůžete volitelně povolit zabezpečení přenosu pro vazbu tohoto koncového bodu služby. Podrobnosti viz bezpečnost dopravy.

  3. Přidejte do hostitele služby nový koncový bod aplikace pomocí instance vazby, kterou jste právě vytvořili. Podrobnosti o tom, jak přidat koncový bod služby do kódu, najdete v tématu Postupy: Vytvoření koncového bodu služby v kódu.

  4. Povolte koncový bod metadat HTTP/GET pro vaši službu. Podrobnosti najdete v tématu Jak na to: Publikování metadat pro službu pomocí kódu.

Přidání koncového bodu do konfiguračního souboru

  1. Vytvořte novou konfiguraci vazby BasicHttpBinding. Podrobnosti najdete v tématu Jak na to: Určení vazby služby v konfiguraci.

  2. Volitelně můžete povolit zabezpečení přenosu dat pro tuto konfiguraci vazby koncové služby nastavením režimu zabezpečení vazby na Transport. Podrobnosti najdete v sekci Bezpečnost dopravy.

  3. Nakonfigurujte nový koncový bod aplikace pro vaši službu pomocí konfigurace vazby, kterou jste právě vytvořili. Podrobnosti o tom, jak přidat koncový bod služby do konfiguračního souboru, najdete v tématu Postupy: Vytvoření koncového bodu služby v konfiguraci.

  4. Povolte koncový bod metadat HTTP/GET pro vaši službu. Podrobnosti najdete v tématu Postupy: Publikování metadat služby pomocí konfiguračního souboru.

Příklad

Následující ukázkový kód ukazuje, jak přidat koncový bod WCF, který je kompatibilní s klienty webové služby ASP.NET v kódu a alternativně v konfiguračních souborech.

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 {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>

Viz také