Augmenter la taille du fichier de téléchargement Asp.Net noyau

actuellement, je travaille avec Asp.Net Core et MVC6 ont besoin de télécharger la taille du fichier illimité. J'ai cherché sa solution mais je n'ai toujours pas la réponse.

j'ai essayé ce lien

si quelqu'un a une idée, Aidez-moi.

Merci.

22
demandé sur Ashley Lee 2016-08-01 15:01:00

4 réponses

Les autres réponses résoudre le IIS restriction. Toutefois, à partir de ASP.NET Core 2.0, Kestrel server impose également ses propres limites par défaut.

Github de KestrelServerLimits.cs

Annonce de corps de la requête limite de la taille et de la solution (cité ci-dessous)

Instructions MVC

si vous souhaitez modifier la limite de taille Max request pour une action MVC spécifique ou contrôleur, vous pouvez utiliser le RequestSizeLimit l'attribut. La suite permettrait MyAction pour accepter la demande des organes jusqu'à 100 000 000 d'octets.

[HttpPost]
[RequestSizeLimit(100_000_000)]
public IActionResult MyAction([FromBody] MyViewModel data)
{

[DisableRequestSizeLimit] peut être utilisé pour rendre la taille de la requête illimitée. Cela rétablit effectivement le comportement pre-2.0.0 Pour l'action attribuée ou le contrôleur.

Générique Middleware Instructions

si la requête n'est pas traitée par une action MVC, la limite peut quand même être modifiée sur la base d'une requête IHttpMaxRequestBodySizeFeature. Par exemple:

app.Run(async context =>
{
    context.Features.Get<IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize = 100_000_000;

MaxRequestBodySize est un long nul. Le paramétrer à null désactive la limite comme MVC's [DisableRequestSizeLimit].

vous ne pouvez configurer la limite sur une requête que si l'application n'a pas encore commencé à lire; sinon une exception est lancée. Il y a un IsReadOnly propriété qui vous indique si le MaxRequestBodySize propriété est en lecture seule ce qui signifie qu'il est trop tard pour configurer la limite.

Global Configuration Instructions

Si vous vous voulez modifier la taille du corps de la requête max globalement, cela peut être fait en modifiant un MaxRequestBodySize propriété dans le rappel de UseKestrel ou UseHttpSys. MaxRequestBodySize est une longue nullable dans les deux cas. Par exemple:

.UseKestrel(options =>
{
    options.Limits.MaxRequestBodySize = null;

ou

.UseHttpSys(options =>
{
    options.MaxRequestBodySize = 100_000_000;
37
répondu Matthew Steven Monkan 2017-08-28 21:32:39

vous recevez probablement un code de statut HTTP 404.13 lorsque vous téléchargez un fichier de plus de 30 Mo. Si vous courez votre ASP.Net application de base dans L'IIS, le pipeline de L'IIS intercepte votre demande avant qu'elle n'atteigne votre application.

mise à jour de votre site web.config:

<system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
    <!-- Add this section for file size... -->
    <security>
      <requestFiltering>
        <!-- Measured in Bytes -->
        <requestLimits maxAllowedContentLength="1073741824" />  <!-- 1 GB-->
      </requestFiltering>
    </security>
  </system.webServer>
  <system.web>
    <!-- Measured in kilobytes -->
    <httpRuntime maxRequestLength="1048576" />
  </system.web>
26
répondu Ashley Lee 2017-09-06 14:50:49

dans ASP.NET projet Core 1.1 créé par Visual Studio 2017, si vous souhaitez augmenter la taille du fichier de téléchargement. Vous devez créer web.fichier de configuration par vous-même, et ajouter ces de contenu:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 1 GB -->
        <requestLimits maxAllowedContentLength="1073741824" />
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

En Démarrage.cs fichier, ajouter de contenu:

public void ConfigureServices(IServiceCollection services)
{
  services.Configure<FormOptions>(x =>
  {
      x.ValueLengthLimit = int.MaxValue;
      x.MultipartBodyLengthLimit = int.MaxValue;
      x.MultipartHeadersLengthLimit = int.MaxValue;
  });

  services.AddMvc();
}
14
répondu haiwuxing 2018-06-13 03:35:11
  1. dans votre web.config:

    <system.webServer>
      <security>
        <requestFiltering>
          <requestLimits maxAllowedContentLength="2147483648" />
        </requestFiltering>
      </security>
    </system.webServer>
    
  2. éditer manuellement L'hébergeur D'application.fichier de configuration:

    1. Cliquez Sur Démarrer. Dans la zone de recherche Démarrer, tapez Bloc-notes. Cliquez avec le bouton droit de la souris sur Bloc-notes, puis cliquez sur "Exécuter en tant qu'administrateur".
    2. dans le menu Fichier, cliquez Ouvrir. Dans la case Nom de fichier, tapez "%windir%\system32\inetsrv\config\applicationhost.config", puis cliquez sur Ouvrir.
    3. Dans le ApplicationHost.config le fichier, recherchez le <requestLimits> nœud.
    4. Supprimer maxAllowedContentLength propriété. Ou, ajoutez une valeur qui correspond à la taille de L'en-tête Content-Length que le client envoie dans le cadre de la requête. Par défaut, la valeur de l' maxAllowedContentLength la propriété est de 30000000.

      enter image description here

    5. Enregistrer le ApplicationHost.config fichier.

0
répondu Thomas Verhoeven 2018-07-15 19:43:18