|
|
Публикувано в 8.03.2018 г. 10:18:07 ч.
|
|
|
|

1. Причини за проблема В приложението "Проблеми след пускането" на статистиката за бъгове след излизането на проект има:
Като натрупване на опит, тези проблеми, причини и решения ще бъдат включени в контролния списък, след че: Първият въпрос: Дали горната граница на параметъра на URL е точна референция? Каква е горната граница? Втори въпрос: Защо има ограничение на данните при POST? Лимитът 128K ли е? 2. Анализ на проблема 1. Първият: 1) В URL адреса няма горна граница на параметрите. Проблемът всъщност е, че IE има ограничение на дължината на URL адресите. 2) Спецификацията на HTTP протокола също не ограничава дължината на URL адреса. Това ограничение е наложено от конкретен браузър и сървър. Ограничението на IE за дължина на URL адреса е 2083 байта (2K+35). За други браузъри като Netscape, Firefox и др. няма теоретично ограничение на дължината и зависи от поддръжката на операционната система. [Реф. 1] 3) "Параметрите с променлива дължина се предават чрез URL" всъщност означава, че при подаване на формуляра се използва методът GET, а не методът POST. Причината за тази потенциална грешка е използването на метода GET за подаване на данни от формуляри. Защото методът GET предава данните от URL адреса към сървъра за обработка. 4) Обърнете внимание, че това ограничение е цялата дължина на URL адреса, а не само дължината на данните за стойността на параметъра. 5) Тъй като това е ограничението на IE за дължина на URL, както методът GET, така и методът POST имат това ограничение. (Моля, вижте съответния документ за подробности относно методите GET и POST на ФОРМУЛЯР [Ref. 2]) Препоръки: 1) Да разбере средата, в която се намира приложението, като например браузърната и сървърната среда на уеб приложението, и да разбере специфичните му параметрични ограничения. 2) Използвайте метода POST възможно най-често за подаване на сложни данни. Забележка: Когато FORM не записва атрибута на метода, по подразбиране се използва методът GET. Заключение (записване в Checklist): При подаване на данни чрез метода GET трябва да се вземе предвид лимитът на дължината на URL адреса от 2083 байта в IE средата. 2. Второто: 1) Теоретично, POST няма ограничение по размер. Спецификацията на HTTP протокола също няма ограничение по размер. 2) "Има ограничение на размера 128K за POST данни" не е достатъчно точно, няма ограничение за POST данните, а изчислителната мощ на процесора на сървъра играе ограничителна роля. 3) За ASP програмите има ограничение от дължината на данните от 100K, когато обектът Request обработва всяко поле във формата. Но при Request.BinaryRead няма такова ограничение. За решения, които изискват обработка на повече от 100K данни от домейн на формуляри, моля, вижте [Ref. 3] по-долу. 4) По разширение, за IIS 6.0, Microsoft е увеличила ограниченията по съображения за сигурност [Реф. 4]. Трябва също да обърнем внимание на:
IIS 6.0 по подразбиране има максимум 200 KB ASP POST данни, а лимитът е 100 KB на поле за форма.
Стандартният размер на файловете за качване в IIS 6.0 е 4MB.
IIS 6.0 по подразбиране има максимален заглавие за заявка от 16KB.
Тези ограничения не бяха налични преди IIS 6.0. Препоръки: 1) Познаването на стандартните настройки на работещата среда ще ви помогне да проектирате и бързо решавате възникналите проблеми. 2) Трябва да се вземе предвид версията на сървъра. Всяка версия на IIS има различни настройки по подразбиране за тези параметри, така че при нужда намерете информация и съставете сравнителна таблица. По този начин има референция за разработка и тестване. 3) Тези ограничения на IIS 6.0 всъщност са просто стандартни настройки и можеш да ги променяш в реалната приложна среда. В WINNT/system32/inetsrv/MetaBase.xml по подразбиране дефиницията е: AspBufferingLimit="4194304" съответства на максималния размер на качения файл AspMaxRequestEntityAllowed="204800" съответства на максималното количество данни в POST ... Заключение (записване в Checklist): Когато използвате ASP, трябва да имате предвид, че POST формулярът има ограничение от 100KB на поле за обща обработка на четене. Обмислете дали да използвате Request.Binary.
|
Предишен:asp.net mvc задава поста във формата така, че да позволява подаване на HTMLСледващ:System.Linq.Dynamic
|