14.01.2017, Vladimír Klaus, navštíveno 2986x

ASP.NET/C#

Pokud potřebujete v ASP.NET aplikaci nahrávat na server data, nemusíte narazit na vůbec žádný problém. Stačí k tomu, aby soubory nebyly moc velké a měli jste rozumně rychlé připojení. Co znamená "moc velké" se nedá obecně říci, protože se může lišit v nastavení serveru, IIS apod.

Co ale dělat v případě, že soubory jsou velké a ještě třeba nemáte velmi rychlé připojení? A jak to poznáte? Že musíte situaci řešit, poznáte obvykle tak, že aplikace spadne, případně může nahlásit i ne úplně jasnou chybu. O tom, že byste se dozvěděli, jaký je tedy limit na velikost souboru nebo timeout si můžete nechat jen zdát.

Řešením je úprava web.config, kam se musí doplnit nové limitní velikosti a případně upravit i čas, třeba tak jak je ukázáno zde. 

<configuration>
  <system.web>
    <!-- Timeout na 3600 vteřin (1 hodina), Upload až do 1000 MB
     + ještě nastavení webServer!!! -->
    <httpRuntime executionTimeout="3600" maxRequestLength="1000000" />
  </system.web>

  <system.webServer>
    <security>
      <requestFiltering>
        <!-- Tady také musí být těch 1000 MB -->
        <requestLimits maxAllowedContentLength="1000000000" />
      </requestFiltering>
    </security>
  </system.webServer>
  
</configuration>

Údaj maxRequestLength slouží k nastavení maximální možné velikosti pro ASP.NET, údaj maxAllowedContentLength je totéž, jen je to pro IIS. Na co je ale třeba dát pozor je fakt, že první údaj se udává v kB a druhý v bajtech. Nastavení času executionTimeout se pak zadává ve vteřinách.

Zdroje: