Maksymalny rozmiar pliku w AMODIT
Wprowadzenie
W systemie AMODIT istnieje możliwość załadowania plików do sprawy (do pól typu dokument lub na listę dokumentów). Dodatkowo plik może być dodawany jako szablon w definicji procesu. Ze względu na ograniczenia wprowadzone w konfiguracji serwera IIS, nie można załadować nieskończenie dużych plików. Za to odpowiadają limity zdefiniowane w tych dwóch parametrach konfiguracyjnych:
- maxRequestLength (liczony w kilobajtach [kB]);
- maxAllowedContentLength (liczony w bajtach [B]).
Aby zapewnić niezawodność i wydajność systemu AMODIT, konieczne jest dostosowanie obu parametrów do specyficznych potrzeb użytkowników oraz do przewidywanego rozmiaru przesyłanych plików. Należy też uwzględnić inne aspekty konfiguracyjne, takie jak czas oczekiwania na odpowiedź serwera (executionTimeout), aby zapewnić płynne działanie systemu.
Zależności między parametrami maxRequestLength i maxAllowedContentLength
W systemie AMODIT, zarządzanie przesyłaniem plików opiera się na precyzyjnie skonfigurowanych parametrach maxRequestLength oraz maxAllowedContentLength.
Znaczenie parametrów
- maxRequestLength określa maksymalny rozmiar żądania HTTP w kilobajtach. Jest to parametr szczególnie istotny w kontekście aplikacji ASP.NET i zapewnia, że żadne żądanie przekraczające ten limit nie zostanie przetworzone.
- maxAllowedContentLength definiuje maksymalny rozmiar treści w żądaniu HTTP w bajtach. Jest to kluczowy parametr konfiguracyjny na poziomie serwera IIS, kontrolujący wielkość przesyłanych plików.
Oba parametry muszą być odpowiednio skonfigurowane, aby zapewnić, że system AMODIT może bezproblemowo obsługiwać przesyłanie dużych plików. Parametr o niższym limicie decyduje o ostatecznym rozmiarze pliku, który może zostać przesłany.
Konsekwencje przekroczenia limitów:
- W przypadku przekroczenia limitu maxRequestLength, użytkownik zobaczy komunikat na stronie sprawy informujący o błędzie, a w logu systemowym zostanie zarejestrowana wiadomość “Przekroczono maksymalną długość żądania.”
- Przekroczenie limitu maxAllowedContentLength skutkuje wyświetleniem komunikatu “The page was not displayed because the request entity is too large.” zarówno podczas ładowania plików do pól typu dokument, jak i na listę dokumentów oraz w przypadku szablonów w definicji procesów.
Gdzie ustawić wartości parametrów maxRequestLength i maxAllowedContentLength
Jak to już zostało wspomniane we wprowadzeniu do artykułu, oba parametry konfiguruje się w pliku web.config aplikacji webowej AMODIT, ale w różnych sekcjach.
Parametr maxRequestLength wyrażony w kilobajtach(!) ustawia się w sekcji:
<configuration> <system.web> <httpRuntime maxRequestLength="100000" executionTimeout="300" requestValidationMode="2.0" targetFramework="4.5.2" maxQueryStringLength="32768" maxUrlLength="65536"/> </system.web> </configuration>
Parametr maxAllowedContentLength wyrażony w bajtach(!) ustawia się w sekcji:
<configuration> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="52428800" maxQueryString="4096" /> </requestFiltering> </security> </system.webServer> </configuration>
UWAGA! Powyżej ustawione wartości są domyślnymi (i zalecanymi), które są wprowadzone w pliku web.config w paczce instalacyjnej dla wydania 240930.1 systemu AMODIT.
Przykład konfiguracji dla plików o rozmiarach do 1 GB
Jeśli chcesz umożliwić użytkownikom wczytywanie plików o rozmiarach do 1 GB (czyli 1 073 741 824 bajty), musisz odpowiednio skonfigurować oba parametry maxRequestLength i maxAllowedContentLength. Oto jak to zrobić:
Parametr maxRequestLength – wartość musi być ustawiona w kilobajtach, a więc dla 1GB będzie to:
1 GB = 1 073 741 824 bajty / 1024 = 1 048 576 kB
Przykład wpisu w pliku web.config:
<configuration> <system.web> <httpRuntime maxRequestLength="1048576" /> <!-- Ustawia maksymalny rozmiar żądania na 1 GB --> </system.web> </configuration>
Parametr maxAllowedContentLength – wartość musi być ustawiona w bajtach, a więc dla 1 GB będzie to:
1 GB = 1 073 741 824 bajty
Przykład wpisu w pliku web.config:
<configuration> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="1073741824" /> <!-- Ustawia maksymalny rozmiar treści na 1 GB --> </requestLimits> </requestFiltering> </security> </system.webServer> </configuration>
Inne kroki konfiguracyjne
Oprócz konfiguracji wspomnianych dwóch parametrów należy też rozważyć wprowadzenie zmian w konfiguracji następujących obszarów/funkcjonalności niezwiązanych bezpośrednio z systemem AMODIT, ale mogących mieć wpływ na skuteczność przekazywania plików o dużych rozmiarach:
- Timeouty serwera: musisz upewnić się, że czas oczekiwania na odpowiedź serwera (timeout) jest wystarczająco długi, aby umożliwić przesłanie dużych plików. Możesz skonfigurować executionTimeout w web.config:
<configuration> <system.web> <httpRuntime executionTimeout="3600" /> <!-- Ustawia timeout na 1 godzinę --> </system.web> </configuration>
- Konfiguracja IIS: jeśli używasz IIS 7.0 lub nowszego, musisz upewnić się, że odpowiednie ustawienia są skonfigurowane w pliku applicationHost.config lub w menedżerze IIS.
- Maksymalny rozmiar przechowywanych plików w bazie MySQL: jeśli pliki dołączane do systemu AMODIT są przechowywane w bazie danych MySQL, to powinieneś również rozważyć ustawienie odpowiedniej wartości parametru max_allowed_packet. Więcej w artykule: How to change max_allowed_packet size @ stackoverflow.com.
Podsumowanie
Należy ustawić oba parametry maxRequestLength i maxAllowedContentLength, aby umożliwić użytkownikom przesyłanie plików o rozmiarze np. 1 GB. Należy również upewnić się, że konfiguracja timeout’ów i innych ustawień serwera jest odpowiednio dostosowana do obsługi dużych plików.