ProHoster > Blog > fitantanan-draharaha > Avy amin'ny fiainana miaraka amin'i Kubernetes: Ahoana no tsy nankasitrahan'ny mpizara HTTP ny Espaniola
Avy amin'ny fiainana miaraka amin'i Kubernetes: Ahoana no tsy nankasitrahan'ny mpizara HTTP ny Espaniola
Ny solontenan'ny mpanjifanay, izay mipetraka ao amin'ny Microsoft cloud (Azure) ny antontan-taratasy fangatahana, dia niresaka olana: vao haingana, ny fangatahana sasany avy amin'ny mpanjifa sasany avy any Eoropa dia nanomboka nifarana tamin'ny fahadisoana 400 (Fangatahana tsy mety). Ny fampiharana rehetra dia voasoratra ao amin'ny .NET, napetraka ao amin'ny Kubernetes...
Ny iray amin'ireo fampiharana dia ny API, izay hahatongavan'ny fifamoivoizana rehetra amin'ny farany. Ity fifamoivoizana ity dia henoin'ny mpizara HTTP kestrel, namboarina tamin'ny mpanjifa .NET ary nampiantranoina ao anaty pod. Miaraka amin'ny debugging, dia tsara vintana izahay amin'ny heviny fa nisy mpampiasa manokana izay namerina tsy tapaka ilay olana. Na izany aza, sarotra ny zava-drehetra noho ny rojo fifamoivoizana:
Toa ny tcpdump ihany no hanampy amin'ny famahana ity olana ity... fa averiko indray ny momba ny rojo fifamoivoizana:
fanadihadiana
Mazava ho azy fa tsara kokoa ny mihaino ny fifamoivoizana amin'io node manokana io, izay nametrahan'i Kubernetes pod: ny habetsahan'ny fanariam-pako dia ho azo atao ny mahita zavatra faran'izay haingana. Ary marina tokoa, rehefa nandinika azy io, dia voamarika ity frame manaraka ity:
Taorian'ny nanesorana ny fandefasana ireo lohapejy ireo dia nilamina ny zava-drehetra! (Tsy ela dia nanjary nazava fa ny fampiharana mihitsy dia tsy mila ireo lohapejy ireo intsony.)
Andeha hojerentsika ny olana amin'ny ankapobeny. Azo averina mora foana ao anatin'ny fampiharana izany amin'ny alalan'ny fangatahana telnet localhost:80:
Hiverina 400 Bad request β ao amin'ny log de application dia hahazo lesoka efa mahazatra antsika:
{
"@t":"2019-03-31T12:59:54.3746446Z",
"@mt":"Connection id "{ConnectionId}" bad request data: "{message}"",
"@x":"Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Malformed request: invalid headers.n at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.TryParseRequest(ReadResult result, Boolean& endConnection)n at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.<ProcessRequestsAsync>d__185`1.MoveNext()",
"ConnectionId":"0HLLLR1J974L9",
"message":"Malformed request: invalid headers.",
"EventId":{
"Id":17,
"Name":"ConnectionBadRequest"
},
"SourceContext":"Microsoft.AspNetCore.Server.Kestrel",
"ThreadId":71
}
vokatra
Indrindra indrindra, Kestrel tsy afaka manodinkodina tsara ny lohatenin'ny HTTP miaraka amin'ny tarehintsoratra marina ao amin'ny UTF-8, izay voarakitra ao amin'ny anaran'ny tanΓ na maro be.
Antony iray fanampiny amin'ny tranga misy antsika dia tsy mikasa ny hanova ny fampiharana ny Kestrel amin'ny fampiharana ny mpanjifa amin'izao fotoana izao. Na izany aza, ny olana ao amin'ny AspNetCore mihitsy (β4318, β7707) hoy izy ireo fa tsy hanampy izany...
Raha fintinina: ny fanamarihana dia tsy momba ny olana manokana momba an'i Kestrel na UTF-8 (tamin'ny 2019?!), fa momba ny zava-misy fahatsiarovan-tena sy fianarana tsy tapaka Ny dingana rehetra ataonao eo am-pikarohana olana dia hamokatra na ho ela na ho haingana. Mirary anao ho tsara vintana!