Condividi tramite


Procedura: configurare un servizio WCF che interagisca con client di servizi Web ASP.NET

Per configurare un endpoint del servizio Windows Communication Foundation (WCF) per l'interoperabilità con client di servizi Web ASP.NET, utilizzare il tipo System.ServiceModel.BasicHttpBinding come tipo di associazione per l'endpoint del servizio.

È possibile, se lo si desidera, attivare nell'associazione il supporto per HTTPS e l'autenticazione del client a livello di trasporto. I client di servizi Web ASP.NET non supportano la codifica messaggi MTOM, pertanto la proprietà System.ServiceModel.BasicHttpBinding.MessageEncoding deve essere lasciata con il suo valore predefinito System.ServiceModel.WSMessageEncoding.Text. I client di servizi Web ASP.NET non supportano WS-Security, pertanto System.ServiceModel.BasicHttpBinding.Security deve essere impostato su Transport.

Per rendere disponibili i metadati per un servizio WCF agli strumenti di generazione di proxy di servizi Web ASP.NET (ovvero Strumento del linguaggio di descrizione dei servizi Web (Wsdl.exe), Strumento di individuazione Servizi Web (Disco.exe) e la funzionalità Aggiungi riferimento Web di Visual Studio), è necessario esporre un endpoint dei metadati HTTP/GET.

Per aggiungere un endpoint WCF compatibile con client di servizi Web ASP.NET nel codice

  1. Creare una nuova istanza BasicHttpBinding.

  2. Attivare facoltativamente la protezione del trasporto per questa associazione dell'endpoint del servizio impostando la modalità di sicurezza per l'associazione su Transport. Per informazioni dettagliate, vedere Protezione del trasporto.

  3. Aggiungere un nuovo endpoint applicazione all'host del servizio utilizzando l'istanza di associazione appena creata. Per informazioni dettagliate sull'aggiunta di un endpoint del servizio nel codice, vedere Procedura: creare un endpoint del servizio nel codice.

  4. Attivare un endpoint dei metadati HTTP/GET per il servizio. Per informazioni dettagliate, vedere Procedura: pubblicare metadati per un servizio utilizzando codice.

Per aggiungere un endpoint WCF compatibile con client di servizi Web ASP.NET in un file di configurazione

  1. Creare una nuova configurazione dell'associazione BasicHttpBinding. Per informazioni dettagliate, vedere Procedura: specificare un'associazione al servizio in configurazione.

  2. Attivare facoltativamente la protezione del trasporto per questa configurazione dell'associazione dell'endpoint del servizio impostando la modalità di sicurezza per l'associazione su Transport. Per informazioni dettagliate, vedere Protezione del trasporto.

  3. Configurare un nuovo endpoint applicazione per il servizio utilizzando la configurazione dell'associazione appena creata. Per informazioni dettagliate su come aggiungere un endpoint del servizio in un file di configurazione, vedere Procedura: creare un endpoint di servizio nella configurazione.

  4. Attivare un endpoint dei metadati HTTP/GET per il servizio. Per informazioni dettagliate, vedere Procedura: pubblicare metadati per un servizio utilizzando un file di configurazione.

Esempio

Nell'esempio di codice seguente viene illustrato come aggiungere un endpoint WCF compatibile con i client di servizi Web ASP.NET nel codice e, in alternativa, nei file di configurazione.

Imports System
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 = "https://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
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 = "https://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();
    }
}
<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>

Vedere anche

Attività

Procedura: creare un endpoint del servizio nel codice
Procedura: pubblicare metadati per un servizio utilizzando codice
Procedura: specificare un'associazione al servizio in configurazione
Procedura: creare un endpoint di servizio nella configurazione
Procedura: pubblicare metadati per un servizio utilizzando un file di configurazione

Concetti

Utilizzo di metadati

Altre risorse

Protezione del trasporto