Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 40852|Odgovoriti: 0

[ASP.NET] Glave Ocelot Request morajo vsebovati le ASCII znake

[Kopiraj povezavo]
Objavljeno na 10. 05. 2021 15:24:29 | | | |
Pregled:

Serija Ocelot (1) ASP.NET Core Gateway v praksi
https://www.itsvse.com/thread-9284-1-1.html


Ko zaženete ocelot gateway, se za dostopni vmesnik prijavi naslednja napaka:
Statusna koda: 502; Slab prehod                                                                                                                                                                                                                                                                                                                                                                                                                      
Projekt je ASP.NET Core 3.1,Različica, ki jo uporablja Ocelot, je 16.0.1



info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: ni prejšnjega ID zahteve, sporočilo: EndpointRateLimiting ni omogočen za /{url}
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: ni prejšnjega ID zahteve, sporočilo: Koda napake: ConnectionToDownstreamServiceError Message: Napaka pri povezovanju z nadaljnjo storitvijo, izjema: System.Net.Http.HttpRequestException: Glave zahtev morajo vsebovati le ASCII znake.
         at System.Net.Http.HttpConnection.WriteStringAsync(String s)
         at System.Net.Http.HttpConnection.WriteHeadersAsync(HttpHeaders headers, String cookiesFromContainer)
         at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
         at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
         at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task'1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
         pri Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) napake, najdene v ResponderMiddleware. Nastavitev odziva na napako za pot zahteve:/test1/home/index, metoda zahtevka: GET
Z uporabo Fiddlerja za lovljenje paketov sem ugotovil, da ima piškotek kitajski niz, in sicer:




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


Brskalnik napiše kodo piškotka (Naslednja kodna vrednost ni izpuščena) lahko reproducira težavo:

Konzola brskalnika piše piškotke
https://www.itsvse.com/thread-4682-1-1.html
Poskusite izprazniti predpomnilnik piškotkov in prehod se vrne v normalno stanje, kot je prikazano na spodnji sliki:



Vrstni red izvajanja middleware z Ocelotom je naslednji:

PreErrorResponderMiddleware
PreAuthenticationMiddleware
AvtentikacijaMiddleware
PreAuthorizacijaMiddleware
AuthorMiddleware       
PreQueryStringBuilderMiddleware


(Konec)




Prejšnji:ASP.NET Core dobi zahtevo do celotne URL povezave
Naslednji:Test zmogljivosti Redis Benchmark
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com