Vytváření interoperabilních služeb WS-I Basic Profile 1.1
Konfigurace koncového bodu služby WCF tak, aby byl interoperabilní s klienty webové služby ASP.NET:
Jako typ vazby System.ServiceModel.BasicHttpBinding pro koncový bod služby použijte typ vazby.
Nepoužívejte funkce zpětného volání a kontraktu relace nebo chování transakcí ve vašem koncovém bodu služby.
Volitelně můžete u vazby povolit podporu ověřování klientů na úrovni protokolu HTTPS a přenosu.
Následující funkce třídy vyžadují funkce nad rámec základního BasicHttpBinding profilu WS-I 1.1:
Message Transmission Optimization Mechanism (MTOM) kódování zpráv řízené BasicHttpBinding.MessageEncoding vlastností. Ponechte tuto vlastnost ve své výchozí hodnotě, což není WSMessageEncoding.Text použití MTOM.
Zabezpečení zpráv řízené BasicHttpBinding.Security hodnotou poskytuje podporu zabezpečení WS-Security kompatibilní s profilem základního zabezpečení WS-I 1.0. Ponechte tuto vlastnost ve své výchozí hodnotě, což není SecurityMode.Transport použití WS-Security.
Pokud chcete, aby byla metadata pro službu WCF dostupná pro ASP.NET, použijte nástroje pro generování klienta webové služby: Nástroj pro jazyk popis webových služeb (Wsdl.exe), nástroj zjišťování webových služeb (Disco.exe) a funkci Přidat odkaz na web v sadě Visual Studio. Povolte publikování metadat. Další informace najdete v tématu Publikování koncových bodů metadat.
Příklad
Popis
Následující příklad kódu ukazuje, jak přidat koncový bod WCF, který je kompatibilní s klienty webové služby ASP.NET v kódu a případně v konfiguračním souboru.
Kód
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>