首页 > 解决方案 > 指定网络名称的格式无效:系统重新启动时出现 HTTPListener 错误

问题描述

我已经在 c# 中实现了一个 Http Listener 作为 Windows 服务。Windows 服务设置为在机器重新启动时自动启动。当我在安装后手动启动服务时,http 监听器工作正常,它响应它收到的请求。但是,当服务在系统重新启动时启动时,我收到以下错误:

System.Net.HttpListenerException (0x80004005): 指定网络名称的格式无效

我在 listener.Start() 上收到此错误。

http监听器的代码是这样的:

HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://myip:port/");
listener.Start();

我从这个已经提出的问题中得到了一个建议。如果我遵循答案中给出的内容,它仍然不起作用。此外,我尝试运行:

netsh http show iplisten

在 powershell 中,列表为空。即使 http 侦听器工作(当我第一次安装服务并运行它时),此命令的输出也是空列表。所以我不认为这是一个问题。

任何建议都会非常有帮助。

标签: c#.netwindows-services

解决方案


回答我自己的问题。似乎还需要运行一些其他服务才能让我们能够启动 http 侦听器。在 windows 启动我的服务时,这些还没有启动。我为此找到了两种解决方案,一种是使用延迟启动

sc.exe config myservicename start=delayed-auto

另一种是在启动http监听的时候有一个try catch,如果失败,几秒后重试。就我而言,时间至关重要,所以我使用第二种方法,因为它比第一种方法启动侦听器快 2 分钟。


推荐阅读