Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konu, güvenilir oturumlarla Güvenli Yuva Katmanı (SSL) aktarım güvenliğinin kullanımını gösterir. HTTPS üzerinden güvenilir bir oturum kullanmak için, güvenilir bir oturum ve HTTPS aktarımı kullanan özel bir bağlama oluşturmanız gerekir. Güvenilir oturumu zorunlu olarak kod kullanarak veya yapılandırma dosyasında bildirimli olarak etkinleştirirsiniz. Bu yordam, güvenilir oturumu ve httpsTransport> öğesini etkinleştirmek için istemci ve< hizmet yapılandırma dosyalarını kullanır.
Bu prosedürün kilit kısmı, uç nokta yapılandırma öğesinin, özel bağlama yapılandırması (adı reliableSessionOverHttps<) referansı olan bir bindingConfiguration öznitelik içermesinin gerekmesidir.
<bağlama> yapılandırma öğesi, <reliableSession> ve <httpsTransport> öğelerini dahil ederek güvenilir bir oturumun ve HTTPS aktarımının kullanılacağını belirtmek için bu ada başvurur.
Bu örneğin kaynak kopyası için bkz. HTTPS üzerinden Özel Bağlama Güvenilir Oturumu.
HTTPS ile güvenilir bir oturum kullanmak için hizmeti CustomBinding ile yapılandırma
Hizmet türü için bir hizmet sözleşmesi tanımlayın.
[ServiceContract] public interface ICalculator { [OperationContract] double Add(double n1, double n2); [OperationContract] double Subtract(double n1, double n2); [OperationContract] double Multiply(double n1, double n2); [OperationContract] double Divide(double n1, double n2); }Hizmet sözleşmesini bir hizmet sınıfında uygulayın. Adres veya bağlama bilgilerinin hizmetin uygulamasında belirtilmemiş olduğunu unutmayın. Yapılandırma dosyasından adres veya bağlama bilgilerini almak için kod yazmanız gerekmez.
public class CalculatorService : ICalculator { public double Add(double n1, double n2) { return n1 + n2; } public double Subtract(double n1, double n2) { return n1 - n2; } public double Multiply(double n1, double n2) { return n1 * n2; } public double Divide(double n1, double n2) { return n1 / n2; } }Özel bağlama adına sahip ve güvenilir bir oturum ile HTTPS aktarımı kullanan bir uç noktayı yapılandırmak için,
CalculatorServiceile bir Web.config dosyası oluşturun.<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration="CalculatorServiceBehavior"> <!-- Use base address provided by the host --> <endpoint address="" binding="customBinding" bindingConfiguration="reliableSessionOverHttps" contract="Microsoft.ServiceModel.Samples.ICalculator" /> <!-- The mex endpoint is exposed as http://localhost/servicemodelsamples/service.svc/mex --> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> <bindings> <customBinding> <binding name="reliableSessionOverHttps"> <reliableSession /> <httpsTransport /> </binding> </customBinding> </bindings> </system.serviceModel> </configuration>Service.svc dosyasını şu satırı içerecek şekilde oluşturun:
<%@ServiceHost language=c# Service="CalculatorService" %>Service.svc dosyasını Internet Information Services (IIS) sanal dizinine yerleştirin.
İstemciyi HTTPS ile güvenilir bir oturum kullanacak şekilde CustomBinding ile yapılandırma
Hizmet meta verilerinden kod oluşturmak için komut satırından ServiceModel Meta Veri Yardımcı Programı Aracı'nı (Svcutil.exe) kullanın.
Svcutil.exe <Metadata Exchange (MEX) address or HTTP GET address>Oluşturulan istemci, istemci uygulamasının karşılaması gereken hizmet sözleşmesini tanımlayan
ICalculatorarabirimini içerir.// Generated interface defining the ICalculator contract [System.ServiceModel.ServiceContractAttribute( Namespace="http://Microsoft.ServiceModel.Samples", ConfigurationName="Microsoft.ServiceModel.Samples.ICalculator")] public interface ICalculator { [System.ServiceModel.OperationContractAttribute( Action="http://Microsoft.ServiceModel.Samples/ICalculator/Add", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/AddResponse")] double Add(double n1, double n2); [System.ServiceModel.OperationContractAttribute( Action="http://Microsoft.ServiceModel.Samples/ICalculator/Subtract", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/SubtractResponse")] double Subtract(double n1, double n2); [System.ServiceModel.OperationContractAttribute( Action="http://Microsoft.ServiceModel.Samples/ICalculator/Multiply", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/MultiplyResponse")] double Multiply(double n1, double n2); [System.ServiceModel.OperationContractAttribute( Action="http://Microsoft.ServiceModel.Samples/ICalculator/Divide", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/DivideResponse")] double Divide(double n1, double n2); }Oluşturulan istemci uygulaması,
ClientCalculatorimplementasyonunu da içerir. Adres ve bağlama bilgilerinin hizmetin uygulamasında belirtilmemiş olduğunu unutmayın. Yapılandırma dosyasından adres ve bağlama bilgilerini almak için kod yazmanız gerekmez.// Implementation of the CalculatorClient public partial class CalculatorClient : System.ServiceModel.ClientBase<Microsoft.ServiceModel.Samples.ICalculator>, Microsoft.ServiceModel.Samples.ICalculator { public CalculatorClient() { } public CalculatorClient(string endpointConfigurationName) : base(endpointConfigurationName) { } public CalculatorClient(string endpointConfigurationName, string remoteAddress) : base(endpointConfigurationName, remoteAddress) { } public CalculatorClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : base(endpointConfigurationName, remoteAddress) { } public CalculatorClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : base(binding, remoteAddress) { } public double Add(double n1, double n2) { return base.Channel.Add(n1, n2); } public double Subtract(double n1, double n2) { return base.Channel.Subtract(n1, n2); } public double Multiply(double n1, double n2) { return base.Channel.Multiply(n1, n2); } public double Divide(double n1, double n2) { return base.Channel.Divide(n1, n2); } }HTTPS aktarımını ve güvenilir oturumları kullanmak için adlı
reliableSessionOverHttpsözel bir bağlama yapılandırın.<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <client> <!-- This endpoint has an https address --> <endpoint name="" address="https://localhost/servicemodelsamples/service.svc" binding="customBinding" bindingConfiguration="reliableSessionOverHttps" contract="Microsoft.ServiceModel.Samples.ICalculator" /> </client> <bindings> <customBinding> <binding name="reliableSessionOverHttps"> <reliableSession /> <httpsTransport /> </binding> </customBinding> </bindings> </system.serviceModel> </configuration>Bir uygulamada
ClientCalculatoröğesinin bir örneğini oluşturun ve ardından hizmet işlemlerini çalıştırın.//Client implementation code. class Client { static void Main() { // Create a client with given client endpoint configuration CalculatorClient client = new CalculatorClient(); // Call the Add service operation. double value1 = 100.00D; double value2 = 15.99D; double result = client.Add(value1, value2); Console.WriteLine($"Add({value1},{value2}) = {result}"); // Call the Subtract service operation. value1 = 145.00D; value2 = 76.54D; result = client.Subtract(value1, value2); Console.WriteLine($"Subtract({value1},{value2}) = {result}"); // Call the Multiply service operation. value1 = 9.00D; value2 = 81.25D; result = client.Multiply(value1, value2); Console.WriteLine($"Multiply({value1},{value2}) = {result}"); // Call the Divide service operation. value1 = 22.00D; value2 = 7.00D; result = client.Divide(value1, value2); Console.WriteLine($"Divide({value1},{value2}) = {result}"); //Closing the client gracefully closes the connection and cleans up resources client.Close(); Console.WriteLine(); Console.WriteLine("Press <ENTER> to terminate client."); Console.ReadLine(); } }İstemciyi derleyin ve çalıştırın.
.NET Framework güvenliği
Bu örnekte kullanılan sertifika Makecert.exeile oluşturulmuş bir test sertifikası olduğundan, tarayıcınızdan gibi https://localhost/servicemodelsamples/service.svcbir HTTPS adresine erişmeye çalıştığınızda bir güvenlik uyarısı görüntülenir.
Ayrıca bkz.
- Güvenilir Oturumlar