I have following rest windows service which works perfectly over HTTP
Uri[] httpBaseAddress = new Uri[] { new Uri("http://localhost:8464/SupportRemote") };
serviceHost = new ServiceHost(typeof(Service.SupportRemoteService), httpBaseAddress);
var Binding = new WebHttpBinding();
ServiceEndpoint endpoint = serviceHost.AddServiceEndpoint(typeof(Model.ISupportRemoteService), Binding, "Rest");
endpoint.Behaviors.Add(new WebHttpBehavior());
foreach (ServiceEndpoint EP in serviceHost.Description.Endpoints)
EP.Behaviors.Add(new BehaviorAttribute());
var serviceBehavior = new ServiceMetadataBehavior();
serviceBehavior.HttpGetEnabled = true;
serviceHost.Description.Behaviors.Add(serviceBehavior);
serviceHost.Open();
Now i want to move it over HTTPS with self-signed certificate, but the service does not work. i don`t know where the problem is
Uri[] httpBaseAddress = new Uri[] { new Uri("https://localhost:8464/SupportRemote") };
serviceHost = new ServiceHost(typeof(Service.SupportRemoteService), httpBaseAddress);
var Binding = new WebHttpBinding(WebHttpSecurityMode.Transport);
Binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
ServiceEndpoint endpoint = serviceHost.AddServiceEndpoint(typeof(Model.ISupportRemoteService), Binding, "Rest");
endpoint.Behaviors.Add(new WebHttpBehavior());
foreach (ServiceEndpoint EP in serviceHost.Description.Endpoints)
EP.Behaviors.Add(new BehaviorAttribute());
var serviceBehavior = new ServiceMetadataBehavior();
serviceBehavior.HttpGetEnabled = false;
serviceBehavior.HttpsGetEnabled = true;
serviceHost.Description.Behaviors.Add(serviceBehavior);
serviceHost.Credentials.ServiceCertificate.SetCertificate("CN=MyCertificate", System.Security.Cryptography.X509Certificates.StoreLocation.LocalMachine, System.Security.Cryptography.X509Certificates.StoreName.Root);
serviceHost.Open();