Как обнаружить закрытие соединения в пустелькеC#

Место общения программистов C#
Ответить
Anonymous
 Как обнаружить закрытие соединения в пустельке

Сообщение Anonymous »

Еще раз, документация Microsoft оставляет меня желающим. Я пытаюсь найти правильный API, в котором я могу настроить обратный вызов для ловушки, когда клиент закрывает их соединение. Конфигурация Kestrel и сообщения журнала запуска. Когда я запускаю клиент GRPC, я вижу в сообщениях журнала консоли сервера, указывающего на то, что соединение было сделано следующим образом: < /p>

Код: Выделить всё

dbug: Microsoft.AspNetCore.Server.Kestrel.Connections[39]
Connection id "0HMCEE5LHGSKR" accepted.
dbug: Microsoft.AspNetCore.Server.Kestrel.Connections[1]
Connection id "0HMCEE5LHGSKR" started.
< /code>
Когда я закрываю клиент, нажав кнопку «Закрыть окно» (x), я вижу следующее: < /p>
dbug: Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets[19]
Connection id "0HMCEE5LHGSKR" reset.
dbug: Microsoft.AspNetCore.Server.Kestrel.Http2[48]
Connection id "0HMCEE5LHGSKR" is closed. The last processed stream ID was 1.
dbug: Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets[7]
Connection id "0HMCEE5LHGSKR" sending FIN because: "The client closed the connection."
dbug: Microsoft.AspNetCore.Server.Kestrel.Connections[2]
Connection id "0HMCEE5LHGSKR" stopped.
< /code>
Опция для использования метода расширения Listenoptions.useconnectionLogging (Listenoptions) не предоставляет опции обратного вызова, который я могу найти. Очевидно, что в промежуточном программном обеспечении по умолчанию событие захватывается, но я не могу найти путь к этой опции.  Исследование Microsoft.aspnetcore.server.kestrel именного пространства имен показывает, что я могу найти), как добраться до microsoft.aspnetcore.server.kestrel.connections или microsoft.aspnetcore.server.kestrel.transport.sockets. 
Я использую Visual Studio 2022, .NET 6, C# 10 и GRPC.  Вот моя текущая конфигурация Kestrel: < /p>
// Configure Kestrel, the .NET Core web server.
var hostBuilder = webHostBuilder.ConfigureKestrel (kestrelServerOptions => {

kestrelServerOptions.ConfigureHttpsDefaults (httpsConnectionAdapterOptions => httpsConnectionAdapterOptions.SslProtocols = SslProtocols.Tls12);

// Read in the X.509 certificate file.
var certPath = Path.Combine (builder.Environment.ContentRootPath, "Certs", $"{environment}.pfx");

kestrelServerOptions.ConfigureEndpointDefaults (listenOptions => {

_ = listenOptions.UseHttps (certPath, password);

logger.Debug ($"Using {certPath} as the cert file.");
logger.Debug ("Configuring host to use HTTP/2 protocol.");

listenOptions.Protocols = HttpProtocols.Http2;
});

logger.Debug ("Reading config values for the server name and port.");

// Get the host name and port number to bind the service to.
var port = builder.Configuration.GetValue ("AppSettings:OperationsServerPort");
var address = IPAddress.Parse ("0.0.0.0");

if (address != null) {
logger.Debug ($"Host will listen at https://{address}:{port}");

kestrelServerOptions.Listen (address, port);
} else {
logger.Error ("DNS address for service host cannot be determined!  Exiting...");

Environment.Exit (-1);
}
});
Любые подсказки, руководство, примеры будут высоко оценены!

Подробнее здесь: https://stackoverflow.com/questions/695 ... in-kestrel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»