|
|
Közzétéve 2018. 03. 08. 10:18:07
|
|
|
|

1. A probléma okai A "Post-Release Problems" mellékletben a projekt megjelenése utáni hibastatisztikák a következők találhatók:
Tapasztalati halmozódásként ezek a problémák, okok és megoldások szerepelnek az ellenőrzőlistában, aztán: Az első kérdés: Az URL paraméter felső határa pontos hivatkozás? Mi a felső határ? Második kérdés: Miért van korlátozás az adatforgalomra, amikor POST történik? A limit 128K? 2. Problémaelemzés 1. Az első: 1) Az URL-ben nincs felső paraméterhatár. A probléma valójában az, hogy az IE-ben van hosszkorlát az URL-ekre. 2) A HTTP protokoll specifikációja sem korlátozza az URL hosszát. Ez a korlát egy adott böngésző és szerver által bevezetett korlátozás. Az IE URL hosszának korlátja 2083 bájt (2K+35). Más böngészőknél, mint a Netscape, FireFox stb. esetében nincs elméleti hosszkorlát, és ez a korlát az operációs rendszer támogatásától függ. [Ref. 1] 3) "Változó hosszúságú paramétereket továbbítanak URL-en keresztül" valójában azt jelenti, hogy a GET módszert használják az űrlap benyújtásakor, nem pedig a POST módszert. Ezt a lehetséges hibát a GET módszer alkalmazása a űrlapadatok beküldésére. Mert a GET metódus továbbítja az URL-ben lévő adatokat a szervernek feldolgozásra. 4) Fontos megjegyezni, hogy ez a korlát az egész URL hosszát tartalmazza, nem csak a paraméterértéked adathosszát. 5) Mivel ez az IE URL-hosszának korlátja, mind a GET-metódus, mind a POST metódus rendelkezik ezzel a korlátozással. (Kérjük, tekintse meg a kapcsolódó dokumentumot a FORM [Ref. 2] GET és POST módszereiről) Ajánlások: 1) Ismerd meg az alkalmazás környezetét, például a böngésző- és szerverkörnyezetet, valamint ismerd meg a konkrét paraméterkorlátokat. 2) Használd a POST módszert a lehető legösszetettebb adatok beküldéséhez. Megjegyzés: Ha a FORM nem írja meg a metódus attribútumot, az alapértelmezett a GET metódus használata. Következtetés (írj az ellenőrzőlistára): Amikor adatokat küldünk be a GET módszerrel, figyelembe kell venned az IE környezetben az URL hossz 2083 bájtos határát. 2. A második: 1) Elméletileg a POST-nak nincs méretkorlátja. A HTTP protokoll specifikációjának mérete sem korlátozódik. 2) "A POST adatokra 128K méretkorlát van" nem elég pontos, nincs korlát a POST adatokra, és a szerver processzorának feldolgozási kapacitása is korlátozó szerepet játszik. 3) ASP programok esetén 100K adathossz korlátozás van, amikor a Request objektum minden űrlapmezőt feldolgoz. De az Request.BinaryRead esetében nincs ilyen korlátozás. Ha olyan megoldásokat keresnek, amelyek több mint 100 ezer űrlap-domain adatfeldolgozást igényelnek, kérjük, lásd az alábbi [Ref. 3] oldalt. 4) Ezzel összefüggésben, az IIS 6.0-nál a Microsoft biztonsági okokból fokozta a korlátozásokat [Ref. 4]. Figyelnünk kell a következőkre is:
Az IIS 6.0 alapértelmezett maximum 200 KB ASP POST adatot tartalmaz, és a korlát 100 KB űrlapmezőnként.
Az IIS 6.0 feltöltési fájlok alapértelmezett mérete 4MB.
Az IIS 6.0 alapértelmezett maximális kérésfejléce 16KB.
Ezek a korlátozások az IIS 6.0 előtt nem voltak elérhetők. Ajánlások: 1) A futókörnyezet alapértelmezett beállításainak ismerete segít gyorsan megtervezni és megoldani a felmerülő problémákat. 2) A szerver verziót érdemes megfontolni. Minden IIS verziónak eltérő alapértelmezett beállításai vannak ezekhez a paraméterekhez, így szükség esetén keress információkat és állíts össze összehasonlító táblázatot. Így van egy referencia a fejlesztéshez és teszteléshez. 3) Az IIS 6.0 korlátai valójában csak az alapértelmezett beállítások, és ezeket a tényleges alkalmazáskörnyezetben módosíthatod. A WINNT/system32/inetsrv/MetaBase.xml alapértelmezett definíciója a következő: Az AspBufferingLimit="4194304" megfelel a feltöltött fájl maximális méretének Az AspMaxRequestEntityAllowed="204800" a POST maximális adatmennyiségének felel meg ... Következtetés (írj az ellenőrzőlistára): ASP használatakor figyelembe kell venni, hogy a POST űrlap általános olvasási feldolgozáshoz 100KB határt ad mezőnként. Gondold át, hogy használjuk-e az Request.Binary-t.
|
Előző:asp.net mvc beállítja az űrlapbejegyzést úgy, hogy engedélyezze a HTML beküldéstKövetkező:System.Linq.Dynamic
|