Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 40852|Yanıt: 0

[ASP.NET] Ocelot Request başlıkları yalnızca ASCII karakterleri içermelidir

[Bağlantıyı kopyala]
Yayınlandı 10.05.2021 15:24:29 | | | |
Eleştiri:

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


Ocelot gateway'i başlattığınızda, erişim arayüzü için aşağıdaki hata bildirilir:
Durum Kodu: 502; Kötü Geçit                                                                                                                                                                                                                                                                                                                                                                                                                      
Proje ASP.NET Core 3.1,Ocelot tarafından kullanılan sürüm 16.0.1'dir



info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: önceki istek kimliği yok, mesaj: /{url} için EndpointRateLimiting etkin değil
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: önceki istek kimliği yok, mesaj: Hata Kodu: ConnectionToDownstreamServiceError Message: Down stream servisine bağlanma hatası, istisna: System.Net.Http.HttpRequestException: İstek başlıkları yalnızca ASCII karakterler içermelidir.
         at System.Net.Http.Http.HttpConnection.WriteStringAsync(String s)
         at System.Net.Http.Http.Connection.WriteHeadersAsync(HttpHeaders headers, String cookiesFromContainer)
         at System.Net.Http.Http.Connection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
         at System.Net.Http.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancelToken)
         at System.Net.Http.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
         at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
         at System.Net.Http.Http.Client.FinishSendAsyncBuffered(Task'1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
         Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) adresinde ResponderMiddleware'de bulunan hatalar bulundu. İstek yolu için hata yanıtı ayarlamak:/test1/home/index, talep yöntemi: GET
Fiddler kullanarak paketleri şu şekilde yakaladım, kurabiyenin Çin dizisi olduğunu ve şu şekilde olduğunu gördüm:




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


Tarayıcı bir çerez kodu yazar (Aşağıdaki kod değeri kaçırılmıyor) sorunu tekrar üretebilir:

Tarayıcı konsolu çerezler yazıyor
https://www.itsvse.com/thread-4682-1-1.html
Cookie önbelleğini boşaltmayı deneyin ve gateway aşağıdaki görselde gösterildiği gibi normale döner:



Ocelot ile ara varlıkın uygulama sırası şöyledir:

PreErrorResponderMiddleware
PreAuthenticationMiddleware
AuthenticationMiddleware
PreAuthorisationMiddleware
AuthorisationMiddleware       
PreQueryStringBuilderMiddleware


(Son)




Önceki:ASP.NET Core, tam URL bağlantısı isteğini alıyor
Önümüzdeki:Redis Benchmark performans testi
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com