Начиная с .NET Framework 4.5, был представлен класс HttpListenertimeoutManager , который действует как менеджер для HttpListeners:
Диспетчер тайм-аута для использования с объектом HttpListener.
Что позволяет вам установить различные таймауты для HttpListener, используя TimeSpan
, например, так:
private HttpListenerTimeoutManager manager;
manager.IdleConnection = TimeSpan.FromMinutes(2);
manager.HeaderWait = timespan.FromMinutes(2);
manager.DrainEntityBody= timespan.FromMinutes(2);
это похоже на то, что нужно сохранять определенную предустановку без необходимости устанавливать все таймауты индивидуально для любого слушателя, который может быть запущен.
Теперь я хочу установить TimeoutManager
на моем HttpListener listener
на только что созданный manager
. Однако, кажется, нет способа сделать это.
listener.TimeoutManager = manager;
нельзя сделать, поскольку свойство listener.TimeoutManager
равно только для чтения (как указано в документах ).
Но нет альтернативного listener.TimeoutManager.Set()
метода для его установки или любого другого метода установки.
Создание нового HttpListener с менеджером в его конструкторе listener = new HttpListener(manager)
также не работает, так как HttpListener не имеет конструктора, который принимает 1 аргумент.
То есть единственный способ, которым я могу редактировать HeaderWait
с помощью диспетчера на моем слушателе, - это сделать следующее:
listener.TimeoutManager.HeaderWait = manager.HeaderWait;
что на самом деле сводится к
listener.TimeoutManager.Headerwait = Timespan.FromMinutes(2);
Что тогда кажется лучшим вариантом, так как избавляет меня от создания дополнительной переменной, и все же вынуждает меня устанавливать каждый таймаут индивидуально.
Не понимаю ли я сценарий использования HttpListenerTimeoutManager или наблюдаю за его настройкой?
Использование Unity с .NET 4.x (которая обеспечивает поддержку до библиотек классов .NET 4.7) версия среды выполнения сценариев.