我已經創建了一個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
並得到了這個。
我也粘貼寫在我的項目綁定端口上運行的Web服務的代碼:
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」作爲主題名稱。這是你的證書中使用的名字嗎? – 2013-02-20 21:36:37
在你的m_serviceHost.AddServiceEndpoint()中,你正在添加一個沒有配置安全模式的新WebHttpBinding()。你應該使用之前創建的'綁定'。但是我仍然很驚訝你沒有看到任何錯誤。此外,如果您繼續看到問題,請嘗試添加跟蹤並查看您是否獲得了更多信息。 – Praburaj 2013-02-20 23:45:57
@MortenMertner從哪裏可以看到我的證書名稱? – 2013-02-21 08:04:12