Procedimiento para configurar servicios WCF para interoperar con clientes de servicios web ASP.NET
Para configurar un punto de conexión de servicio de Windows Communication Foundation (WCF) para que sea interoperable con clientes de servicios web de ASP.NET, utilice el tipo System.ServiceModel.BasicHttpBinding como tipo de enlace del punto de conexión de servicio.
Puede habilitar opcionalmente el soporte para HTTPS y la autenticación del cliente del nivel de transporte en el enlace. Los clientes de servicios web de ASP.NET no admiten la codificación de mensajes de MTOM, por lo que la propiedad BasicHttpBinding.MessageEncoding debería dejarse en su valor predeterminado, que es WSMessageEncoding.Text. Los clientes de servicios web de ASP.NET no admiten WS-Security, por lo que la propiedad BasicHttpBinding.Security debería establecerse en Transport.
Para que los metadatos de un servicio WCF estén disponibles para las herramientas de generación de servidores proxy de servicios web de ASP.NET (es decir, Web Services Description Language Tool (Wsdl.exe), Web Services Discovery Tool (Disco.exe) y la característica Agregar referencia web de Visual Studio), debería exponer un punto de conexión de metadatos de HTTP/GET.
Adición de un punto de conexión en el código
Cree una nueva instancia de BasicHttpBinding
De manera opcional, habilite la seguridad de transporte para este enlace de punto de conexión de servicio estableciendo el modo de seguridad para el enlace en Transport. Para más información, consulte Seguridad de transporte.
Agregue un nuevo extremo de la aplicación a su host de servicio mediante la instancia de enlace que acaba de crear. Para más información sobre cómo agregar un punto de conexión de servicio en el código, consulte Creación de un punto de conexión de servicio en el código.
Habilite un punto de conexión de metadatos HTTP/GET para su servicio. Para más información, consulte Publicación de metadatos para un servicio mediante código.
Adición de un punto de conexión en un archivo de configuración
Cree una nueva configuración de enlace BasicHttpBinding. Para más información, consulte Especificación de un enlace de servicio en la configuración.
De manera opcional, habilite la seguridad de transporte para esta configuración de enlace de extremo de servicio estableciendo el modo de seguridad para el enlace en Transport. Para más información, consulte Seguridad de transporte.
Configure un nuevo punto de conexión de la aplicación para su servicio utilizando la configuración de enlace que acaba de crear. Para más información sobre cómo agregar un punto de conexión de servicio en un archivo de configuración, consulte Creación de un punto de conexión de servicio en la configuración.
Habilite un punto de conexión de metadatos HTTP/GET para su servicio. Para más información, consulte Publicación de metadatos para un servicio mediante un archivo de configuración.
Ejemplo
En el siguiente código de ejemplo se muestra cómo agregar un punto de conexión WCF que sea compatible con los clientes de servicios web de ASP.NET en el código y, alternativamente, en los archivos de configuración.
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>
Consulte también
- Procedimiento para crear un punto de conexión de servicio mediante código
- Procedimiento para publicar metadatos para un servicio mediante código
- Procedimiento para especificar un enlace de servicio en la configuración
- Procedimiento para crear un punto de conexión de servicio en la configuración
- Procedimiento para publicar metadatos para un servicio mediante un archivo de configuración
- Seguridad de transporte
- Utilización de los metadatos