Compartir a través de


Creación de servicios interoperables de WS-I Basic Profile 1.1

Para configurar un extremo del servicio WCF para ser interoperable con clientes de servicios Web ASP.NET:

  • Utilice el tipo System.ServiceModel.BasicHttpBinding como tipo de enlace para su extremo de servicio.

  • No utilice devolución de llamada sino características de contrato de sesión o comportamientos de transacción en su extremo de servicio

Puede habilitar opcionalmente el soporte para HTTPS y la autenticación del cliente del nivel de transporte en el enlace.

Las características siguientes de la clase BasicHttpBinding requieren la funcionalidad más allá de WS-I Basic Profile 1.1:

Para que los metadatos para un servicio WCF estén disponibles para ASP.NET, utilice las herramientas de cliente de servicio Web: Web Services Description Language Tool (Wsdl.exe), Web Services Discovery Tool (Disco.exe), y la característica Add Web Reference en Visual Studio; debe habilitar la publicación de metadatos. Para obtener más información, vea Publicación de extremos de metadatos.

Ejemplo

Descripción

El código de ejemplo siguiente muestra cómo agregar un extremo WCF que es compatible con clientes de servicios Web ASP.NET en código y, alternativamente, en archivos de configuración.

Código

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>

Vea también

Conceptos

Interoperabilidad con servicios web ASP.NET