Nasıl yapılır: WCF Hizmetini ASP.NET Web Hizmeti İstemcileriyle Birlikte Çalışmak için Yapılandırma
Windows Communication Foundation (WCF) hizmet uç noktasını ASP.NET Web hizmeti istemcileri ile birlikte çalışabilecek şekilde yapılandırmak için, hizmet uç noktanızın bağlama türü olarak türünü kullanın System.ServiceModel.BasicHttpBinding .
İsteğe bağlı olarak bağlamada HTTPS ve aktarım düzeyi istemci kimlik doğrulaması desteğini etkinleştirebilirsiniz. ASP.NET Web hizmeti istemcileri MTOM ileti kodlamasını BasicHttpBinding.MessageEncoding desteklemez, bu nedenle özelliği varsayılan değeri (olan WSMessageEncoding.Text) olarak bırakılmalıdır. ASP.NET Web Hizmeti istemcileri WS-Security'yi desteklemez, bu nedenle BasicHttpBinding.Security olarak ayarlanmalıdır Transport.
WcF hizmetinin meta verilerini ASP.NET Web hizmeti proxy oluşturma araçları (web hizmetleri açıklama dil aracı (Wsdl.exe), Web Hizmetleri Bulma Aracı (Disco.exe) ve Visual Studio'daki Web Başvurusu Ekle özelliği) için kullanılabilir hale getirmek için http/GET meta veri uç noktasını kullanıma sunmalısınız.
Koda uç nokta ekleme
Yeni BasicHttpBinding örnek oluşturma
İsteğe bağlı olarak, bağlamanın güvenlik modunu olarak ayarlayarak bu hizmet uç noktası bağlaması Transportiçin aktarım güvenliğini etkinleştirin. Ayrıntılar için bkz . Aktarım Güvenliği.
Yeni oluşturduğunuz bağlama örneğini kullanarak hizmet konağınıza yeni bir uygulama uç noktası ekleyin. Koda hizmet uç noktası ekleme hakkında ayrıntılı bilgi için bkz . Nasıl yapılır: Kodda Hizmet Uç Noktası Oluşturma.
Hizmetiniz için bir HTTP/GET meta veri uç noktasını etkinleştirin. Ayrıntılar için bkz . How to: Publish Metadata for a Service Using Code.
Yapılandırma dosyasına uç nokta ekleme
Yeni BasicHttpBinding bir bağlama yapılandırması oluşturun. Ayrıntılar için bkz . Nasıl yapılır: Yapılandırmada Hizmet Bağlaması Belirtme.
İsteğe bağlı olarak bağlama için güvenlik modunu olarak ayarlayarak bu hizmet uç noktası bağlama yapılandırması için Transportaktarım güvenliğini etkinleştirin. Ayrıntılar için bkz . Aktarım Güvenliği.
Az önce oluşturduğunuz bağlama yapılandırmasını kullanarak hizmetiniz için yeni bir uygulama uç noktası yapılandırın. Yapılandırma dosyasına hizmet uç noktası ekleme hakkında ayrıntılı bilgi için bkz . Nasıl yapılır: Yapılandırmada Hizmet Uç Noktası Oluşturma.
Hizmetiniz için bir HTTP/GET meta veri uç noktasını etkinleştirin. Ayrıntılar için bkz . How to: Publish Metadata for a Service Using a Configuration File.
Örnek
Aşağıdaki örnek kod, kodda ve alternatif olarak yapılandırma dosyalarında ASP.NET Web hizmeti istemcileri ile uyumlu bir WCF uç noktasının nasıl ekleneceğini gösterir.
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>
Ayrıca bkz.
- Nasıl yapılır: Kod İçinde Hizmet Uç Noktası Oluşturma
- Nasıl yapılır: Kod Kullanarak Bir Hizmet için Meta Verileri Yayımlama
- Nasıl yapılır: Yapılandırmada Hizmet Bağlaması Belirtme
- Nasıl yapılır: Yapılandırma İçinde Hizmet Uç Noktası Oluşturma
- Nasıl yapılır: Yapılandırma Dosyası Kullanarak Bir Hizmet için Meta Verileri Yayımlama
- Aktarım Güvenliği
- Meta Verileri Kullanma