Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用System.Net.HttpListener在WebSocket中启用SSL_C#_Azure_Websocket_.net 4.5_Httplistener - Fatal编程技术网

C# 如何使用System.Net.HttpListener在WebSocket中启用SSL

C# 如何使用System.Net.HttpListener在WebSocket中启用SSL,c#,azure,websocket,.net-4.5,httplistener,C#,Azure,Websocket,.net 4.5,Httplistener,我在WindowsAzure上使用.NET4.5和HttpListener类(一个工作者角色)来创建自己的WebSocket服务器。对于HTTP非安全连接,它工作得非常好。问题是我需要使用SSL(wss://)保护WebSocket连接 我四处寻找,HttpListener类文档和互联网(即使在这里)都没有给我太多帮助 我发现httpcfg.exe应该可以帮助我配置证书,但没有帮助 这就是我的问题: 有没有办法从我的代码中启用它?比如从存储中读取证书并将其设置在HttpListener上 如果不

我在WindowsAzure上使用.NET4.5和HttpListener类(一个工作者角色)来创建自己的WebSocket服务器。对于HTTP非安全连接,它工作得非常好。问题是我需要使用SSL(wss://)保护WebSocket连接

我四处寻找,HttpListener类文档和互联网(即使在这里)都没有给我太多帮助

我发现httpcfg.exe应该可以帮助我配置证书,但没有帮助

这就是我的问题:

  • 有没有办法从我的代码中启用它?比如从存储中读取证书并将其设置在HttpListener上
  • 如果不是,httpcfg.exe是解决方案吗?如果是,如何使用
  • 如果1==否和2==是,我如何在Azure中使用httpcfg
  • 谢谢!我真的很感谢你的帮助

    致以最良好的祝愿

    古腾堡

    好的,我刚想好

    由于HttpListener是HTTP.sys的包装,我们必须在开始使用HttpListener之前对其进行配置

    httpcfg.exe用于windows Vista之前的windows版本。由于我使用的是.net 4.5 HttpListenerWebSockets,并且它只在Windows8/windows Server 2012上运行(如果您尝试在Windows8之前版本的windows上使用WebSockets,您将得到一个平台表单不支持异常),我们应该使用netsh实用程序,而不是httpcfg

    因此,要在Windows 8中配置HTTP.sys,请打开CMD并向其添加以下命令:

    netsh http add sslcert ipport=IP:PORT certhash=YOU_CERT_HASH appid={GUID}
    
    IPPORT更改为所需的IP地址和端口号,该地址和端口号可通过证书的指纹进行保护,并通过证书的指纹进行加密(证书应先上载到azure portal)和GUID,使用从任何GUID生成工具生成的GUID,如从Visual Studio生成的GUID(工具>创建GUID)

    之后,只需设置
    HttpListener.Prefix.Add(“https://youIP:youPort/yourPath)
    你应该表现得很好

    像我一样,有些人会问如何让它在Windows Azure上运行。。。您可以在启动角色之前使用启动任务运行此命令,并根据需要设置HTTP.sys

    有关如何使用启动任务的更多信息,请查看MSDN上的此文档;有关httpcfgnetsh的更多详细信息,请查看MSDN中的此其他文档