Revisión:
Cuando inicias la pasarela ocelote, se reporta el siguiente error para la interfaz de acceso:
Código de estado: 502; Puerta de entrada mala El proyecto es ASP.NET Core 3.1,La versión utilizada por Ocelot es la 16.0.1
info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0] requestId: 0HM8JAOKL2C09:00000006, previousRequestId: no prior request id, mensaje: EndpointRateLimiting no está habilitado para /{url}
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0] requestId: 0HM8JAOKL2C09:00000006, previousRequestId: sin id de solicitud anterior, mensaje: Código de error: ConnectionToDownstreamServiceMensaje de error: Error conectándose al servicio downstream, excepción: System.Net.Http.HttpRequestException: Los encabezados de solicitud deben contener solo caracteres ASCII. en System.Net.Http.HttpHttpConnection.WriteStringAsync(String s) at System.Net.Http.HttpHttpConnection.WriteHeadersAsync (encabezados HttpHeaders, String cookiesFromContainer) at System.Net.Http.HttpConnection.SendAsyncCore(solicitud de mensajeSolicitudHttp, CancellationToken cancellationToken) at System.Net.Http.HttpHttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, solicitud HttpRequestMessage, boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.HttpHttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.DiagnosticsHandler.SendAsync(solicitud de mensaje de solicitud Http, CancellationToken cancellationToken) at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Tarea'1 sendTask, solicitud HttpRequestMessage, CancellationTokenSource cts, Boolean disposeCts) en Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) errores encontrados en ResponderMiddleware. Configuración de respuesta de error para la ruta de solicitud:/test1/home/index, método de solicitud: GET Usando Fiddler para capturar los paquetes de la siguiente manera, descubrí que la galleta tiene una cadena china, que es la siguiente:
Host: localhost:5002
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: "Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: aaa=测试
El navegador escribe un código de cookie (El siguiente valor de código no se escapa) puede reproducir el problema:
Intenta vaciar la caché de cookies y la pasarela vuelve a la normalidad, como se muestra en la imagen de abajo:
El orden de ejecución del middleware con Ocelot es el siguiente:
PreErrorResponderMiddleware PreAutenticationMiddleware Middleware de autenticación PreAutorizaciónMiddleware Middleware de autorización PreQueryStringBuilderMiddleware
(Fin)
|