Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 40852|Svare: 0

[ASP.NET] Ocelot-forespørselshoder må kun inneholde ASCII-tegn

[Kopier lenke]
Publisert på 10.05.2021 15:24:29 | | | |
Anmeldelse:

Ocelot-serien (1) ASP.NET Core Gateway i praksis
https://www.itsvse.com/thread-9284-1-1.html


Når du starter ocelot-gatewayen, rapporteres følgende feil for tilgangsgrensesnittet:
Statuskode: 502; Dårlig Gateway                                                                                                                                                                                                                                                                                                                                                                                                                      
Prosjektet er ASP.NET Core 3.1,Versjonen som brukes av Ocelot er 16.0.1



info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: no prior request id, melding: EndpointRateLimiting er ikke aktivert for /{url}
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: ingen tidligere forespørsels-ID, melding: Feilkode: ConnectionToDownstreamServiceFeilmelding: Feil tilkobling til nedstrøms tjeneste, unntak: System.Net.Http.HttpRequestException: Forespørselshoder må kun inneholde ASCII-tegn.
         på System.Net.Http.HttpConnection.WriteStringAsync(String s)
         på System.Net.Http.HttpConnection.WriteHeadersAsync(HttpHeaders-headers, String cookiesFromContainer)
         på System.Net.Http.Http.HttpConnection.SendAsyncCore(HttpRequestMessage-forespørsel, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken kansellerToken)
         på System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage-forespørsel, Boolean doRequestAuth, CancellationToken cancellationToken)
         på System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage-forespørsel, CancellationToken cancellationToken)
         at System.Net.Http.Http.HttpClient.FinishSendAsyncBuffered(Task'1 sendTask, HttpRequestMessage-forespørsel, CancellationTokenSource cts, boolsk disposeCts)
         på Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) feil funnet i ResponderMiddleware. Setter feilrespons for forespørselssti:/test1/home/index, forespørselsmetode: GET
Ved å bruke Fiddler for å fange pakker som følger, fant jeg ut at kjeksen har en kinesisk streng, som følger:




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=测试


Nettleseren skriver en informasjonskapselkode (Følgende kodeverdi unnslippes ikke) kan gjenskape problemet:

Nettleserkonsollen skriver informasjonskapsler
https://www.itsvse.com/thread-4682-1-1.html
Prøv å tømme informasjonskapselbufferen, så går gatewayen tilbake til normal tilstand som vist på bildet under:



Rekkefølgen på gjennomføringen av mellomvaren med Ocelot er som følger:

PreErrorResponderMiddleware
PreAuthenticationMiddleware
AuthenticationMiddleware
PreAuthorisationMiddleware
AuthorisationMiddleware       
PreQueryStringBuilderMiddleware


(Slutt)




Foregående:ASP.NET Core får lenken til forespørselens fulle URL.
Neste:Redis Benchmark ytelsestest
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com