使用System.Net.HttpListener时能否设置请求队列名称?
使用System.Net.HttpListener时如何设置HTTP监听队列名称?
我有一个通过HTTP.SYS监听HTTP消息的服务,使用System.Net.HttpListener类实现,代码如下:
this._httpListener = new HttpListener(); foreach(var prefix in _addressPrefixes.Select(ChannelIdToUrlPrefix)) { _httpListener.Prefixes.Add(prefix); } _httpListener.Start();
我希望设置HTTP监听队列的名称,以便在性能监视器中轻松识别它,但找不到实现方法。
作为参考,我另一个使用AspNet Core的服务可以通过RequestQueueName选项设置该名称:
builder.UseHttpSys( options => { // 设置其他所有选项 options.RequestQueueName = "My Custom Name"; } );
请问仅使用HttpListener类时,是否有办法设置队列名称?
回答
System.Net.HttpListener本身没有公开API支持设置HTTP.SYS的请求队列名称。
原因在于:HttpListener是对HTTP.SYS的轻量封装,仅暴露了基础的监听、请求处理能力,内部创建HTTP.SYS请求队列时采用了默认的命名逻辑,没有对外提供修改队列名称的入口。
而AspNet Core的HttpSys服务器集成则是直接调用了HTTP.SYS的原生底层API(例如HttpCreateRequestQueue),因此能够完整配置包括请求队列名称在内的各类高级参数。
替代方案
- 若必须继续使用HttpListener,只能通过性能监视器里默认的队列标识(通常关联进程ID、监听前缀),结合进程名称等特征来区分不同队列。
- 如果技术栈允许,改用AspNet Core的HttpSys服务器是更直接的解决方案,可完全自定义HTTP.SYS的各项配置。
内容的提问来源于stack exchange,提问作者Andrew Shepherd
相关产品推荐
相关产品推荐

