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
Creare una nuova istanza BasicHttpBinding.
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.
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.
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
Creare una nuova configurazione dell'associazione BasicHttpBinding. Per informazioni dettagliate, vedere Procedura: specificare un'associazione al servizio in configurazione.
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.
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.
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