使用System.Net.HttpListener时可以设置请求队列名称吗

问题描述 投票:0回答:1

我有一个通过 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 =>
    {
        //
        // Set all the other options as well
        //          
            options.RequestQueueName = "My Custom Name";
    }
);

当我只是使用 HttpListener 类时,有什么方法可以设置队列名称吗?

c# .net asp.net-core system.net httpsys
1个回答
0
投票

HttpListener 类没有设置 HTTP 监听队列名称的属性或方法。但是,有一个可能的解决方法,涉及使用 Network.Utils 命名空间中的 HttpApi 类。此类有一个名为 SetRequestQueueLength 的静态方法,该方法采用 HttpListener 对象和 int 值作为参数。此方法可用于更改队列长度和队列名称。例如:

using (var listener = new HttpListener())
{
listener.Prefixes.Add("http://*:8080/your/service/");
listener.Start();
Network.Utils.HttpApi.SetRequestQueueLength(listener, 5000); // This also sets the queue name to "your/service"
// ...
}

启动应用程序后,您可以通过运行以下命令来检查队列名称:

netsh http 显示服务状态

© www.soinside.com 2019 - 2024. All rights reserved.