c# - 启用 SSL 的网站无法连接到本地 C# Web 套接字服务器

标签 c# html ssl websocket

我正在使用 local web socket server implemented in C# .当我连接到没有 SSL 的托管 html 页面时它工作正常,但是当启用 SSL 时,Web 套接字连接自动关闭。

在图书馆的readMe.txt文件中,它说附加一个认证文件。 这是我创建和附加文件的方式。右键单击项目并签署 list 并输入密码。然后我按如下方式设置了 Certification 属性。

WebSocketServer server = new WebSocketServer("wss://0.0.0.0:8431");
string path = "C:\\Users\\Dehan\\Documents\\MySolutionName\\";
server.Certificate = new X509Certificate2(path+"certificateName.pfx", "certificate_pwd", X509KeyStorageFlags.MachineKeySet);
server.Start(socket =>
            {
                socket.OnOpen = () =>
                {                        
                   //inside onopen
                };

                socket.OnError = error =>
                {
                    //inside onerror
                };

                socket.OnClose = () =>
                {
                   //inside onclose
                };

                socket.OnMessage = message =>
                {
                 //inside onmessage
                }

           });

Html page

enter image description here

以下代码显示了 html 页面的 javascript

<script type="text/javascript">
    var start = function () {
        var inc = document.getElementById('incomming');
        var wsImpl = window.WebSocket || window.MozWebSocket;
        var form = document.getElementById('sendForm');
        var input = document.getElementById('sendText');

        inc.innerHTML += "connecting to server ..<br/>";

        // create a new websocket and connect
        window.ws = new wsImpl('wss://127.0.0.1:8431/');

        // when data is comming from the server, this metod is called
        ws.onmessage = function (evt) {
            inc.innerHTML += evt.data + '<br/>';
        };

        // when the connection is established, this method is called
        ws.onopen = function () {
            inc.innerHTML += '.. connection open<br/>';
        };

        // when the connection is closed, this method is called
        ws.onclose = function () {
            inc.innerHTML += '.. connection closed<br/>';
        }

        form.addEventListener('submit', function(e){
            e.preventDefault();
            var val = input.value;
            ws.send(val);
            input.value = "";
        });

    }
    window.onload = start;
</script>

最佳答案

server.Certificate = new X509Certificate2(path+"certificateName.pfx", "certificate_pwd", X509KeyStorageFlags.MachineKeySet);

在上面的代码行中,如果您使用的是自签名证书,请确保将其添加到您计算机的受信任根权限中。

关于c# - 启用 SSL 的网站无法连接到本地 C# Web 套接字服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36006486/

相关文章:

javascript - JQuery 点击显示图像,然后在延迟后让它消失?

ssl - 放心使用 RelaxedHTTPSValidation 和 Java 6 问题

c# - ftp 服务器的 URI 问题

c# - 如何解决 Dapper System.Data.DataException HResult=0x80131501 InvalidCastException Invalid cast from 'System.String' to 'System.Uri'

c# - 如何取消任务但等到它完成?

mysql - 是否可以通过 ssl 将 typeorm 连接到 sql gcloud 的实例?

azure - 使用 WAFV2 Azure 应用程序网关使用多个基本监听器时无法更新 SSL 证书

c# - 使用 LINQ to XML 按元素属性过滤文档

javascript - 默认情况下如何在 Bootstrap 中隐藏侧边栏?

jQuery .fadeIn 不工作