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

Rodinys: 20025|Atsakyti: 0

[ASP.NET] ASP.NET parametrų perdavimo, ilgio apribojimų ir naudojimo atsargumo priemonių.

[Kopijuoti nuorodą]
Paskelbta 2018-03-08 10:18:07 | | | |
1. Problemos priežastys
Klaidų statistikos priede "Problemos po išleidimo" po projekto išleidimo yra:   



Kaip patirties kaupimas, šios problemos, priežastys ir sprendimai bus įtraukti į kontrolinį sąrašą, tada:
Pirmas klausimas: ar viršutinė URL parametro riba yra tiksli nuoroda? Kokia yra viršutinė riba?
Antras klausimas: Kodėl yra duomenų apribojimas, kai POST? Ar riba yra 128K?  
2. Problemos analizė
1. Pirmasis:
1) URL nėra viršutinės parametrų ribos. Problema yra ta, kad IE turi ilgio apribojimą URL.
2) HTTP protokolo specifikacija taip pat neriboja URL ilgio. Šis apribojimas yra konkrečios naršyklės ir serverio nustatytas apribojimas. IE URL ilgio apribojimas yra 2083 baitai (2K+35). Kitoms naršyklėms, tokioms kaip "Netscape", "FireFox" ir kt., teorinio ilgio apribojimo nėra, o jo riba priklauso nuo operacinės sistemos palaikymo. [1 nuoroda]
3) "Kintamo ilgio parametrai perduodami per URL" iš tikrųjų reiškia, kad pateikiant formą naudojamas GET metodas, o ne POST metodas. Šią galimą klaidą sukelia GET metodo naudojimas formos duomenims pateikti. Kadangi GET metodas perduoda URL duomenis serveriui apdoroti.
4) Atminkite, kad šis apribojimas yra visas URL ilgis, o ne tik parametro vertės duomenų ilgis.
5) Kadangi tai yra IE URL ilgio riba, tiek GET metodas, tiek POST metodas turi šį apribojimą.
(Daugiau informacijos apie FORM [2 nuoroda] GET ir POST metodus rasite susijusiame dokumente)  
Rekomendacijos:
1) Supraskite aplinką, kurioje yra programa, pvz., žiniatinklio programos naršyklę ir serverio aplinką, ir supraskite konkrečius jos parametrų apribojimus.
2) Kiek įmanoma naudokite POST metodą, kad pateiktumėte sudėtingus duomenis. Pastaba: Kai FORM nerašo metodo atributo, numatytasis yra naudoti GET metodą.
Išvada (parašykite į kontrolinį sąrašą):
Pateikdami duomenis naudodami GET metodą, turite atsižvelgti į 2083 baitų URL ilgio ribą IE aplinkoje.
2. Antrasis:
1) Teoriškai POST neturi dydžio apribojimo. HTTP protokolo specifikacija taip pat neturi dydžio apribojimo.
2) "Yra 128K dydžio apribojimas POST duomenims" nėra pakankamai tikslus, nėra jokių apribojimų POST duomenims, o serverio procesoriaus apdorojimo galia vaidina ribojantį vaidmenį.
3) ASP programoms yra 100K duomenų ilgio riba, kai užklausos objektas apdoroja kiekvieną formos lauką. Tačiau naudojant "Request.BinaryRead" tokio apribojimo nėra. Sprendimus, kuriems reikia apdoroti daugiau nei 100 tūkst. formos domeno duomenų, rasite toliau pateiktame [3 nuoroda].
4) Išplėtus IIS 6.0, "Microsoft" padidino apribojimus saugumo sumetimais [4 nuoroda]. Taip pat turime atkreipti dėmesį į:
   IIS 6.0 numatytasis maksimalus 200 KB ASP POST duomenų, o apribojimas yra 100 KB vienam formos laukui.
    Numatytasis IIS 6.0 nusiuntimo failų dydis yra 4 MB.
    IIS 6.0 numatytoji maksimali užklausos antraštė yra 16 KB.
    Šie apribojimai nebuvo taikomi iki IIS 6.0.
Rekomendacijos:
1) Žinodami numatytuosius veikiančios aplinkos nustatymus, galėsite suprojektuoti ir greitai išspręsti iškilusias problemas.
2) Reikėtų apsvarstyti serverio versiją. Kiekviena IIS versija turi skirtingus numatytuosius šių parametrų nustatymus, todėl, jei reikia, raskite informacijos ir sudarykite palyginimo lentelę. Tokiu būdu yra nuoroda į kūrimą ir testavimą.
3) Šie IIS 6.0 apribojimai iš tikrųjų yra tik numatytieji nustatymai, kuriuos galite keisti faktinėje programos aplinkoje.
    WINNT/system32/inetsrv/MetaBase.xml numatytasis apibrėžimas yra:
        AspBufferingLimit="4194304" atitinka maksimalų įkelto failo dydį
        AspMaxRequestEntityAllowed="204800" atitinka maksimalų duomenų kiekį POST
        ...
Išvada (parašykite į kontrolinį sąrašą):
Kai naudojate ASP, turite atsižvelgti į tai, kad POST formos limitas yra 100 KB vienam laukui bendram skaitymo apdorojimui. Apsvarstykite, ar naudoti Request.Binary.





Ankstesnis:asp.net mvc nustato formos įrašą, kad būtų leidžiamas HTML pateikimas
Kitą:Sistema.Linq.Dynamic
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