Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Para configurar un punto de conexión de servicio WCF para que sea interoperable con ASP.NET clientes de servicio web:
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 siguientes características de la BasicHttpBinding clase requieren funcionalidad más allá de WS-I Perfil básico 1.1:
Codificación de mensajes del Mecanismo de optimización de transmisión de mensajes (MTOM) controlada por la propiedad BasicHttpBinding.MessageEncoding. Deje esta propiedad en su valor predeterminado, que es WSMessageEncoding.Text para no usar MTOM.
La seguridad de mensaje que controla el valor BasicHttpBinding.Security proporciona compatibilidad con WS-Security conforme a WS-I Basic Security Profile 1.0. Deje esta propiedad en su valor predeterminado, que es SecurityMode.Transport, para no usar WS-Security.
Para que los metadatos de un servicio WCF estén disponibles para ASP.NET, use las herramientas de generación de cliente del servicio web: Herramienta de lenguaje de descripción de servicios web (Wsdl.exe), Herramienta de detección de servicios web (Disco.exe) y la característica Agregar referencia web en Visual Studio. Habilite la publicación de metadatos. Para obtener más información, consulte Publishing Metadata Endpoints (Puntos de conexión de metadatos de publicación).
Ejemplo
Descripción
En el código de ejemplo siguiente se muestra cómo agregar un punto de conexión WCF compatible con ASP.NET clientes de servicio web en el código y, como alternativa, en un archivo de configuración.
Código
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>