c# - HttpListener 构造函数在系统启动时花费的时间太长

标签 c# windows-services httplistener

我有一个应该监听 HTTP 请求的 Windows 服务。为此,我正在使用 HttpListener。该服务已成功完成其工作。 但是,当服务设置为在系统启动时自动启动时,我的 HTTP 初始化有延迟。 HttpListener 构造函数需要 1 到 2 分钟才能返回。因此用户已成功登录,例如他的信使已经在线。 我读到 HttpListener is using HTTP.SYS: kernel mode http listener,所以可能是正常的,因为系统正在初始化。

我的问题是: 1)HttpListener初始化有这样的延迟正常吗? 2) 是否有任何解决方法来避免这种延迟(除了不使用 HttpListener)?

编辑: 问题未在 Windows 7 上重现。我只能在 Windows XP 机器上重现它。

最佳答案

我找到了解决方法。

我从服务的“OnStart 线程”调用 HttpListener 构造函数。如果我在另一个线程中移动构造函数调用并只是从服务的 OnStart 方法返回,HttpListener 会像往常一样快速初始化。

我不知道为什么会这样。只能假设 HttpListener 需要的某个组件随后在系统启动时被初始化。

顺便说一句,问题没有在 Windows 7 上重现。我只能在 Windows XP 机器上重现它。

关于c# - HttpListener 构造函数在系统启动时花费的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12091007/

相关文章:

C# HttpListener 响应 + GZipStream

c# - 使用 IErrorHandler 的 WCF 异常处理

.net - 出于性能考虑,在 IIS 7.5 与 Windows 服务中托管 WCF

c# - RabbitMQ 消费者

c# - Windows Service中如何实现文件处理?

c# - 如何将我的公共(public) IP 与 HttpListener 一起使用

c# - 检测客户端与 HttpListener 断开连接

c# - HttpResponseMessage 包含所需响应的单元测试

c# - 使用 linq 在聚合函数之间切换

c# - 使用 WCF 更新现有的 asp.net 项目