Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
So konfigurieren Sie einen WCF-Dienstendpunkt so, dass er mit ASP.NET Webdienstclients interoperabel ist:
Verwenden Sie den System.ServiceModel.BasicHttpBinding Typ als Bindungstyp für Ihren Dienstendpunkt.
Verwenden Sie keine Rückruffunktionen, Sitzungsverträge oder Transaktionsmechanismen an Ihrem Dienstendpunkt.
Optional können Sie die Unterstützung für die HTTPS- und Clientauthentifizierung auf Transportebene für die Bindung aktivieren.
Die folgenden Features der BasicHttpBinding Klasse erfordern Funktionen, die über WS-I Basic Profile 1.1 hinausgehen:
MTOM-Meldungscodierung (Message Transmission Optimization Mechanism), die von der BasicHttpBinding.MessageEncoding-Eigenschaft gesteuert wird. Lassen Sie diese Eigenschaft auf ihrem Standardwert, der WSMessageEncoding.Text ist, um MTOM nicht zu verwenden.
Die durch den BasicHttpBinding.Security Wert gesteuerte Nachrichtensicherheit bietet Unterstützung für WS-Security, die kompatibel mit WS-I Basic Security Profile 1.0 ist. Lassen Sie diese Eigenschaft auf ihrem Standardwert, der SecurityMode.Transport ist, um WS-Security nicht zu verwenden.
Um die Metadaten für einen WCF-Dienst für ASP.NET verfügbar zu machen, verwenden Sie die Webdienstclientgenerierungstools: Web Services Description Language Tool (Wsdl.exe), Web Services Discovery Tool (Disco.exe) und das Feature " Webverweis hinzufügen " in Visual Studio. Aktivieren sie die Metadatenveröffentlichung. Weitere Informationen finden Sie unter Veröffentlichen von Metadatenendpunkten.
Beispiel
BESCHREIBUNG
Im folgenden Beispielcode wird veranschaulicht, wie sie einen WCF-Endpunkt hinzufügen, der mit ASP.NET Webdienstclients im Code und alternativ in einer Konfigurationsdatei kompatibel ist.
Programmcode
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>