Próbuję kontrolować maksymalny całkowity czas trwania pojedynczego połączenia w HttpListener
. Zdaję sobie sprawę z właściwości TimeoutManager
i około 5 różnych wartości limitu czasu, które zawiera, ale nie jest jasne, czy każda z tych wartości będzie sumować się do łącznej liczby miejsc, w których może wystąpić opóźnienie w połączeniu.HttpListener ustawianie całkowitego limitu czasu połączenia
Szukam czegoś więcej w stylu: "Jeśli mamy połączenie, które trwa dłużej niż x s od momentu otwarcia połączenia do teraz, przerwij je, nie wysyłając niczego innego ani nie czekając na nic innego."
EDIT
Aby wyjaśnić, scenariusz, że eksperymentował z polega na serwer próbuje wysłać odpowiedź i klient nie otrzymuje. To powoduje, że HttpListenerResponse.OutputStream.Write()
zawiesza się w nieskończoność. Próbowałem znaleźć metodę, którą mogę wywołać z innego wątku, aby przerwać połączenie. Próbowałem użyć OutputStream.Close()
i otrzymałem Cannot Close Stream until all bytes are written
. Próbowałem też HttpListenerResponse.Abort()
, który nie dawał widocznych efektów.