Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby skonfigurować punkt końcowy usługi WCF do współdziałania z klientami usługi sieci Web ASP.NET:
Użyj typu System.ServiceModel.BasicHttpBinding jako typu powiązania punktu końcowego usługi.
Nie używaj funkcji kontraktu wywołania zwrotnego i sesji ani zachowań transakcji w punkcie końcowym usługi
Opcjonalnie można włączyć obsługę protokołu HTTPS oraz uwierzytelniania klienta na poziomie transportu w powiązaniu.
Następujące funkcje klasy BasicHttpBinding wymagają funkcjonalności poza WS-I Basic Profile 1.1:
Kodowanie komunikatów Mechanizmu Optymalizacji Transmisji Komunikatów (MTOM) kontrolowane przez właściwość BasicHttpBinding.MessageEncoding. Pozostaw tę właściwość na wartości domyślnej, która jest WSMessageEncoding.Text, aby nie używać funkcji MTOM.
Zabezpieczenia komunikatów kontrolowane przez wartość BasicHttpBinding.Security zapewniają WS-Security obsługę zgodną z WS-I Basic Security Profile 1.0. Pozostaw tę właściwość na wartości domyślnej, która jest SecurityMode.Transport, aby nie używać usługi WS-Security.
Aby udostępnić metadane dla usługi WCF w ASP.NET, użyj narzędzi generowania klienta usługi sieci Web: Narzędzia języka opisów usług sieci Web (Wsdl.exe), Narzędzia odnajdywania usług sieci Web (Disco.exe)oraz funkcji Dodaj odwołanie do sieci Web w programie Visual Studio. Włącz publikację metadanych. Aby uzyskać więcej informacji, zobacz Publikowanie punktów końcowych metadanych.
Przykład
Opis
Poniższy przykładowy kod przedstawia sposób dodawania punktu końcowego programu WCF zgodnego z klientami usługi sieci Web ASP.NET w kodzie i, alternatywnie, w pliku konfiguracji.
Kod
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>