Я пытаюсь установить таймауты на HttpListener
, используя
HttpListener listener;
void Foo()
{
listener.TimeoutManager.IdleConnection = TimeSpan.FromMinutes(5);
}
Однако это выдает NotImplementedException
в моем приложении Unity.Свойство TimeoutManager было добавлено в .NET 4.5, в Unity 2019.1.0a10 (с таким же поведением в 2018.3) в настоящее время я использую среду выполнения .NET 4.x, которая в настоящее время по умолчанию имеет значение .NET 4.6 .
Чтобы убедиться, что это не я все испортил, я создал отдельный проект на C #, нацеленный на .NET 4.6, и создал следующую программу:
private static void Main(string[] args)
{
HttpListener listener = GetNewListener();
Console.WriteLine(listener.TimeoutManager.IdleConnection);
HttpListener listener2 = new HttpListener();
SetIdleTimeout(ref listener2, 10);
Console.WriteLine(listener2.TimeoutManager.IdleConnection);
Console.ReadLine();
}
public static void SetIdleTimeout(ref HttpListener listener, int timeout)
{
listener.TimeoutManager.IdleConnection = TimeSpan.FromMinutes(timeout);
}
public static HttpListener GetNewListener()
{
HttpListener listener = new HttpListener();
listener.TimeoutManager.IdleConnection = TimeSpan.FromMinutes(5);
listener.TimeoutManager.HeaderWait = TimeSpan.FromMinutes(5);
listener.TimeoutManager.DrainEntityBody = TimeSpan.FromMinutes(5);
return listener;
}
, которая работает как ожидалось, и регистрирует 00:05:00
и 00:10:00
соответственно.
Теперь, зная, что это на самом деле работает вне единства, я встроил эту программу в DLL и включил ее в свой проект Unity, надеясь, что вызов GetNewListener
будетиспользуйте реализацию библиотеки dll TimeoutManager
и, таким образом, сможете установить ее.Но это также приводит к NotImplementedException
.
Есть ли способ обойти тот факт, что он не реализован в единстве, с использованием DLL или созданием моей собственной реализации?Или это единственное решение, чтобы попытаться связаться с Unity и надеяться, что они его реализуют?
Редактировать: Мне напомнили, что Unity на самом деле использует mono , и смотрю на моно реализацию HttpListenerTImeoutManager
на их github действительно показывает throw new NotImplementedException ();
.
Теперь мой оригинальный вопрос все еще стоит: есть ли способ перезаписать реализацию mono реализацией .net из DLL