Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 40852|Atsakyti: 0

[ASP.NET] Ocelot užklausos antraštėse turi būti tik ASCII simboliai

[Kopijuoti nuorodą]
Paskelbta 2021-05-10 15:24:29 | | | |
Peržiūra:

Ocelot serija (1) ASP.NET Core Gateway praktikoje
https://www.itsvse.com/thread-9284-1-1.html


Kai paleidžiate ocelot šliuzą, pranešama apie šią prieigos sąsajos klaidą:
Statuso kodas: 502; Blogas šliuzas                                                                                                                                                                                                                                                                                                                                                                                                                      
Projektas yra ASP.NET Core 3.1,Ocelot naudojama versija yra 16.0.1



info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, ankstesnisRequestId: nėra ankstesnio užklausos ID, pranešimas: EndpointRateLimiting neįjungtas /{url}
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, ankstesnisRequestId: nėra ankstesnio užklausos ID, pranešimas: Klaidos kodas: ConnectionToDownstreamServiceError Message: Klaida jungiantis prie tolesnės paslaugos, išimtis: System.Net.Http.HttpRequestException: užklausos antraštėse turi būti tik ASCII simboliai.
         adresu System.Net.Http.HttpConnection.WriteStringAsync(String s)
         System.Net.Http.HttpConnection.WriteHeadersAsync(HttpHeaders antraštės, eilutės slapukaiFromContainer)
         System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage užklausa, CancellationToken cancellationToken)
         System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection ryšys, HttpRequestMessage užklausa, Bulio logikos doRequestAuth, CancellationToken cancellationToken)
         System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage užklausa, Bulio logikos doRequestAuth, CancellationToken cancellationToken)
         System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage užklausa, CancellationToken cancellationToken)
         System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task'1 sendTask, HttpRequestMessage užklausa, CancellationTokenSource cts, Bulio logikos disposeCts)
         Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) klaidos, rastos ResponderMiddleware. Užklausos kelio:/test1/home/index, užklausos metodo nustatymas: GET
Naudodamas "Fiddler" paketams gaudyti taip, pastebėjau, kad sausainis turi kinišką eilutę:




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


Naršyklė įrašo slapuko kodą (Ši kodo reikšmė neišvengiama) gali atkurti problemą:

Naršyklės konsolė rašo slapukus
https://www.itsvse.com/thread-4682-1-1.html
Pabandykite ištuštinti slapukų talpyklą ir šliuzas grįš į normalią būseną, kaip parodyta paveikslėlyje žemiau:



Tarpinės programinės įrangos su "Ocelot" vykdymo tvarka yra tokia:

PreErrorResponderMiddleware
Išankstinis autentifikavimasTarpinė programinė įranga
AutentifikavimasTarpinė programinė įranga
Išankstinis autorizavimasTarpinė programinė įranga
AuthorizationMiddleware       
PreQueryStringBuilderMiddleware


(Pabaiga)




Ankstesnis:"ASP.NET Core" gauna užklausos viso URL nuorodą
Kitą:"Redis Benchmark" našumo testas
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com