Еще раз, документация 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);
}
});
Любые подсказки, руководство, примеры будут высоко оценены!
Еще раз, документация Microsoft оставляет меня желающим. Я пытаюсь найти правильный API, в котором я могу настроить обратный вызов для ловушки, когда клиент закрывает их соединение. Конфигурация Kestrel и сообщения журнала запуска. Когда я запускаю клиент GRPC, я вижу в сообщениях журнала консоли сервера, указывающего на то, что соединение было сделано следующим образом: < /p> [code]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 => {
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); } }); [/code] Любые подсказки, руководство, примеры будут высоко оценены!