Resensi:
Saat Anda memulai gateway ocelot, kesalahan berikut dilaporkan untuk antarmuka akses:
Kode Status: 502; Gerbang Buruk Proyek ini ASP.NET Core 3.1,Versi yang digunakan oleh Ocelot adalah 16.0.1
info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0] requestId: 0HM8JAOKL2C09:00000006, previousRequestId: tidak ada id permintaan sebelumnya, pesan: EndpointRateLimiting tidak diaktifkan untuk /{url}
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0] requestId: 0HM8JAOKL2C09:00000006, previousRequestId: tidak ada id permintaan sebelumnya, pesan: Kode Kesalahan: ConnectionToDownstreamServiceError Message: Kesalahan saat menyambungkan ke layanan hilir, pengecualian: System.Net.Http.HttpRequestException: Header permintaan hanya boleh berisi karakter ASCII. di System.Net.Http.HttpConnection.WriteStringAsync(String s) di System.Net.Http.HttpConnection.WriteHeadersAsync(header HttpHeaders, String cookiesFromContainer) di System.Net.Http.HttpConnection.SendAsyncCore(permintaan HttpRequestMessage, CancellationToken cancellationToken) di System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(Koneksi HttpConnection, permintaan HttpRequestMessage, Boolean doRequestAuth, CancellationToken cancellationToken) di System.Net.Http.HttpConnectionPool.SendWithRetryAsync(Permintaan HttpRequestMessage, Boolean doRequestAuth, CancellationToken cancellationToken) di System.Net.Http.DiagnosticsHandler.SendAsync(Permintaan HttpRequestMessage, CancellationToken cancellationToken) di System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task'1 sendTask, permintaan HttpRequestMessage, CancellationTokenSource cts, Boolean disposeCts) di Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) ditemukan di ResponderMiddleware. Mengatur respons kesalahan untuk jalur permintaan:/test1/home/index, metode permintaan: GET Menggunakan Fiddler untuk menangkap paket sebagai berikut, saya menemukan bahwa cookie memiliki string Cina, sebagai berikut:
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=测试
Browser menulis kode cookie (Nilai kode berikut tidak diloloskan) dapat mereproduksi masalah:
Coba kosongkan cache cookie dan gateway kembali normal seperti yang ditunjukkan pada gambar di bawah ini:
Urutan eksekusi middleware dengan Ocelot adalah sebagai berikut:
PraErrorResponderMiddleware PraAutentikasiMiddleware AutentikasiMiddleware PraOtorisasiMiddleware OtorisasiMiddleware PreQueryStringBuilderMiddleware
(Akhir)
|