Я создал автономный веб-сервис WCF HTTP
. Теперь я хочу преобразовать его в HTTPS
. Итак, я следил за следующими пунктами:Не удалось запустить веб-службу WCF https
Страница this для создания certificates
и привязки его к определенному порту. Создаю сертификат с помощью mmc
->console root
и выполнил те же действия, что и в приведенной выше ссылке.
Затем я выполнить следующую команду, чтобы связать порт с сертификатом:
netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
меняет certhash
по моим сертификатам. Я также проверил Created certificate info
и получил это.
Я также вставить код, написанный в моем проекте, чтобы запустить веб-сервис на переплетены порт:
try
{
m_running = true;
private static String m_baseAddress = "https://10.0.0.1:8083";
WebHttpBinding _binding = new WebHttpBinding();
_binding.Security.Mode = WebHttpSecurityMode.Transport;
_binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
m_serviceHost = new WebServiceHost(typeof(TService), new Uri(m_serviceAddress));
m_serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName,"contoso.com");
ServiceEndpoint ep = m_serviceHost.AddServiceEndpoint(typeof(TContract), _binding, "");
m_serviceHost.Open();
}
catch(Exception e){ }
Всякий раз, когда я восстановить мой проект и запустить его. Он всегда начинается на секунду и останавливается. Я проверяю журнал, и ничего не было.
Но когда я удалил эту строку
m_serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName,"contoso.com");
и заменить https
на http
. Он работает нормально.
Вы все еще используете FindBySubjectName с именем «contoso.com» в качестве имени темы. Это имя используется в вашем сертификате? –
В вашем m_serviceHost.AddServiceEndpoint() вы добавляете новый WebHttpBinding() без настройки режима безопасности. Вероятно, вы должны использовать «привязку», которую вы создали ранее. Но все же я удивлен, что вы не видите никаких ошибок при запуске. Также, если вы продолжаете видеть проблемы, попробуйте добавить трассировку и посмотрите, есть ли у вас дополнительная информация. – Praburaj
@MortenMertner Откуда я могу узнать свое имя сертификата? –