我在Windows Azure(工作者角色)上使用.Net 4.5和HttpListener类来创建自己的WebSocket服务器。对于HTTP非安全连接,它可以很好地工作。问题是我需要使用SSL(wss://)保护WebSocket连接。
我一直在寻找,HttpListener类文档和互联网(甚至这里)都没有帮助我。
我发现httpcfg.exe可以帮我配置证书,但没有幸运。
所以,这是我的问题:
谢谢!我真的很感激帮助...
最好的问候......
Gutemberg
答案 0 :(得分:3)
好的,刚想通了。
由于 HttpListener 是 HTTP.sys 的包装,我们必须在开始使用HttpListener之前对其进行配置。
httpcfg.exe用于Windows Vista之前的Windows版本。由于我使用的是.net 4.5 HttpListener WebSockets ,它只适用于 Windows8 / windows Server 2012 (如果你尝试在windows8之前版本的windows上使用websockets,你会得到 PlattaformNotSupportedException ),我们应该使用 netsh 实用程序而不是 httpcfg 。
因此,要在Windows 8中配置HTTP.sys,请打开CMD并向其添加以下命令:
netsh http add sslcert ipport=IP:PORT certhash=YOU_CERT_HASH appid={GUID}
将 IP 和 PORT 更改为您希望使用证书保护的所需IP地址和PORT编号,并使用将 YOUR_CERT_HASH 更改为您的证书的thumbprint (证书应该先前上传到azure门户网站)和 GUID ,其中包含您从任何GUID生成工具(如Visual Studio中的工具>创建Guid)生成的GUID )。
之后,你只需要设置HttpListener.Prefix.Add("https://youIP:youPort/yourPath")
就可以了。
像我一样,有些人会问如何让它在 Windows Azure 上运行...您可以使用启动任务在角色启动之前运行此命令并根据需要设置HTTP.sys。
有关如何使用启动任务的详细信息,请查看MSDN http://msdn.microsoft.com/en-us/library/windowsazure/hh180155.aspx上的此文档以及 httpcfg 或 netsh 的详细信息strong>,请在MSDN http://msdn.microsoft.com/en-us/library/ms733791.aspx
中查看此其他文档