Como: Configurar o serviço WCF para interoperar com ASP.NET clientes de serviço Web
Para configurar um ponto de extremidade de serviço WCF (Windows Communication Foundation) para ser interoperável com ASP.NET clientes de serviço Web, use o System.ServiceModel.BasicHttpBinding tipo como o tipo de associação para seu ponto de extremidade de serviço.
Opcionalmente, você pode habilitar o suporte para HTTPS e autenticação de cliente no nível de transporte na associação. ASP.NET clientes de serviço Web não suportam codificação de mensagem MTOM, portanto, a propriedade deve ser deixada BasicHttpBinding.MessageEncoding como seu valor padrão, que é WSMessageEncoding.Text. ASP.NET clientes de serviço Web não suportam WS-Security, portanto, o BasicHttpBinding.Security deve ser definido como Transport.
Para disponibilizar os metadados de um serviço WCF para ASP.NET ferramentas de geração de proxy de serviço Web (ou seja, Web Services Description Language Tool (Wsdl.exe), Web Services Discovery Tool (Disco.exe) e o recurso Adicionar Referência da Web no Visual Studio), você deve expor um ponto de extremidade de metadados HTTP/GET.
Adicionar um ponto de extremidade no código
Criar uma nova BasicHttpBinding instância
Opcionalmente, habilite a segurança de transporte para esta vinculação de ponto de extremidade de serviço definindo o modo de segurança para a associação como Transport. Para obter detalhes, consulte Segurança de transporte.
Adicione um novo ponto de extremidade de aplicativo ao host de serviço usando a instância de vinculação que você acabou de criar. Para obter detalhes sobre como adicionar um ponto de extremidade de serviço no código, consulte Como : Criar um ponto de extremidade de serviço no código.
Habilite um ponto de extremidade de metadados HTTP/GET para seu serviço. Para obter detalhes, consulte Como publicar metadados para um serviço usando código.
Adicionar um ponto de extremidade em um arquivo de configuração
Crie uma nova BasicHttpBinding configuração de vinculação. Para obter detalhes, consulte Como especificar uma associação de serviço na configuração.
Opcionalmente, habilite a segurança de transporte para essa configuração de vinculação de ponto de extremidade de serviço definindo o modo de segurança para a associação como Transport. Para obter detalhes, consulte Segurança de transporte.
Configure um novo ponto de extremidade de aplicativo para seu serviço usando a configuração de associação que você acabou de criar. Para obter detalhes sobre como adicionar um ponto de extremidade de serviço em um arquivo de configuração, consulte Como criar um ponto de extremidade de serviço em configuração.
Habilite um ponto de extremidade de metadados HTTP/GET para seu serviço. Para obter detalhes, consulte Como : Publicar metadados para um serviço usando um arquivo de configuração.
Exemplo
O código de exemplo a seguir demonstra como adicionar um ponto de extremidade WCF que é compatível com ASP.NET clientes de serviço Web no código e, alternativamente, em arquivos de configuração.
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 também
- Como: Criar um ponto de extremidade de serviço no código
- Como: Publicar metadados para um serviço usando código
- Como: Especificar uma associação de serviço na configuração
- Como: Criar um ponto de extremidade de serviço na configuração
- Como: Publicar metadados para um serviço usando um arquivo de configuração
- Segurança dos Transportes
- Usando metadados