Windows Service通过HTTPS托管WCF

我已根据MSDN的这些说明创建并配置了SSL证书。 我收到此问题列出的错误消息,但我不确定如何将该问题中接受的答案映射到我的App.config文件。 配置文件的内容和服务本身在http上正常工作,只是在https上发生了问题。

我的App.config文件目前是:

                                  

Windows事件日志中返回的错误exception:

服务无法启动。 System.ServiceModel.AddressAlreadyInUseException:HTTP无法注册URL https:// +:54321 / MyService / 。 另一个应用程序已经使用HTTP.SYS注册了此URL。 —> System.Net.HttpListenerException:无法侦听前缀’ https:// +:54321 / MyService / ‘,因为它与计算机上的现有注册冲突。

有人可以给我一个关于如何启用它的指针吗?

我认为你正在连接两个不同的设置。 Netsh可用于为SSL添加证书,但也允许应用程序在给定端口上侦听而无需在管理员帐户下运行。 例外目标是第二次设置。 我以前没见过,但我认为你已经为HTTP注册了这个端口,所以让我们尝试在另一个端口上使用(和注册)HTTPS或者替换以前的注册。

编辑:

使用提升的权限打开命令提示符(作为管理员)。 首先检查SSL证书是否分配给正确的端口:

 netsh http show sslcert 

通过调用以下方法检查是否在该端口上注册了HTTP侦听:

 netsh http show urlacl 

如果是这样,请使用以下命令删除该注册:

 netsh http delete urlacl url=http://+:54321/MyService 

再次添加注册以支持监听HTTPS:

 netsh http add urlacl url=https://+:54321/MyService user=domain\userName 

用户是用于运行Windows服务的帐户。 如果它是本地帐户,则仅使用userName。

注意:在https下,似乎必须在urlacl中使用通配符。 我们不能写https://localhost:8733/...来匹配Visual Studios默认的urlacl for http。 这可能是有意义的,因为请求的主机名在解密之后才可用。

不同的明显原因,但相同的症状,对于那些找到这个post的人。

我运行了一个“总是工作”的应用程序,经过各种(未记录,因为我没想到问题)组合通过远程桌面或本地运行它,登录和注销,并用重新编译但其他相同版本替换它一个不同的版本号我得到了相同的“另一个应用程序已经注册了这个URL …等等,等等”。

显然(?)注册特定于运行的实例,并且在该应用程序的关闭期间持续存在。 (?)在任何情况下,旧的Windows格言,“当有疑问重启”照顾它。 由于没有对应用程序本身进行任何更改,因此无需投诉。 取消注册等也可能有效。 这是在Windows 10下 – 我从未在早期版本的Windows中看到这一点。

以管理员模式运行Visual Studio以关闭Visual Studio应用程序并以管理员模式重新打开它,这就足够了。错误消失了。 在非管理员模式下运行Visual Studio时出现HTTP错误