2016-03-10 2 views
1

Я создал сервер WebSocket с помощью ServiceHost:конфигурации WCF ServiceHost для использования с WebSocket Secure через TLS

using (ServiceHost host = new ServiceHost(typeof(WebSocketsServer), baseAddress)) 
{ 
    CustomBinding binding = new CustomBinding(); 
    binding.Elements.Add(new ByteStreamMessageEncodingBindingElement()); 
    HttpTransportBindingElement transport = new HttpTransportBindingElement(); 
    transport.WebSocketSettings.TransportUsage = WebSocketTransportUsage.Always; 
    transport.WebSocketSettings.CreateNotificationOnConnection = true; 
    binding.Elements.Add(transport); 

    host.AddServiceEndpoint(typeof(IWebSocketsServer), binding, ""); 

    host.Open(); 
} 

Он прекрасно работает с моим приложением JavaScript. В настоящее время я пытаюсь добавить поддержку для WebSocket Secure. Я изменил HttpTransportBindingElement к Http сек TransportBindingElement, тем BaseUrl к https: // и соединение URL-адрес в приложении JavaScript для WSS: //

using (ServiceHost host = new ServiceHost(typeof(WebSocketsServer), baseAddress)) 
{ 
    CustomBinding binding = new CustomBinding(); 
    binding.Elements.Add(new ByteStreamMessageEncodingBindingElement()); 
    HttpsTransportBindingElement transport = new HttpsTransportBindingElement(); 
    transport.WebSocketSettings.TransportUsage = WebSocketTransportUsage.Always; 
    transport.WebSocketSettings.CreateNotificationOnConnection = true; 

    binding.Elements.Add(transport); 


    host.AddServiceEndpoint(typeof(IWebSocketsServer), binding, ""); 


    host.Open(); 
} 

Я ожидал, что он будет работать, приложение запускается без ошибок, но после подключения в JavaScript я получаю эту ошибку.

WebSocket connection to 'wss://localhost:5555/wsData' failed: Error in connection establishment: net::ERR_CONNECTION_RESET

Существуют ли какие-либо другие настройки ServiceHost необходимо использовать WebSocket безопасно? Безопасна ли защита WebSocket в Microsoft ServiceModel?

ответ

0

Наконец-то я нашел решение. Вышеупомянутый код работает для сценария, но мне пришлось настроить сертификат для хост-машины и запустить клиентское приложение через HTTPS. Это сообщение было полезно Self hosted WCF using WebSockets is not working using SSL