web-dev-qa-db-fra.com

Erreur HTTP 404.13 - asp.net core 2.0

Erreur HTTP 404.13 - Introuvable Le module de filtrage des demandes est configuré pour refuser une demande qui dépasse la longueur du contenu de la demande.

Vérifiez le paramètre configuration/system.webServer/security/requestFiltering/requestLimits@maxAllowedContentLength dans le fichier applicationhost.config ou web.config.

Je ne sais pas où puis-je configurer que, dans asp.net core 2, il y a un changement pour utiliser appsettings.json à la place.

Essayez même de le faire déjà, mais cela ne fonctionne pas.

services.Configure<FormOptions>(options =>
{
    options.MultipartBodyLengthLimit = 300_000_000;
});
10
Aixasz

Si vous utilisez IIS, vous devez ajouter web.config dans votre application asp.net core 2.0.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- This will handle requests up to 700MB (CD700) -->
        <requestLimits maxAllowedContentLength="737280000" />
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

Si vous n'utilisez pas IIS vous pouvez utiliser l'attribut [RequestSizeLimit(long.MaxValue)] ou [DisableRequestSizeLimit] Dans votre contrôleur.

Vous pouvez également ajouter un paramètre global dans Program.cs:

.UseKestrel(o => { o.Limits.MaxRequestBodySize = null; })

Pour plus d'informations, voir ceci https://github.com/aspnet/Announcements/issues/267

33
Alex Petrachuk

La valeur par défaut de 0000 octets pour la longueur du contenu, ce qui n'était pas suffisant pour moi dans certaines fonctionnalités de téléchargement de fichiers.

<system.webServer>
    <security>

      <requestFiltering>
        <requestLimits maxAllowedContentLength="500000000"></requestLimits>

      </requestFiltering>
    </security>

  </system.webServer>
0
Jeff.k.Daniel

Pour mon projet Core 2.2 MVC, la combinaison de l'attribut [RequestSizeLimit (long.MaxValue)] et du web.config ci-dessus a fonctionné pas. Le web.config seul a fonctionné - N'utilisez simplement pas l'attribut. L'application s'est bloquée et a fermé le navigateur de manière inattendue. De plus, comme la taille maximale de ma demande est de 200 Mo, s'il est possible de générer un résultat 404.13 (trop important), la gestion normale de votre code d'état pas fonctionnera pour le 404.13 (voir Startup.cs, Configure (), le

app.UseStatusCodePagesWithReExecute("/Error/Error", "?statusCode={0}");

ligne). Cependant, la gestion des pages de codes d'état fonctionne pour d'autres codes. J'ai dû insérer la gestion du statut d'erreur personnalisé dans le fichier web.config pour gérer 404.13 avec une vue conviviale gracieuse. Notez que la "suppression" du 404.13 semble également supprimer le code d'état 404 ... et que votre méthode de contrôleur d'erreur ne gérera pas un 404. Il existe deux gestionnaires d'erreur personnalisés dans le web.config ci-dessous - un pour le 404.13 et un pour le 404 afin de résoudre ce problème. J'espère que cela aide quelqu'un:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- This will handle requests up to 201Mb -->
        <requestLimits maxAllowedContentLength="210763776" />
      </requestFiltering>
    </security>
    <httpErrors errorMode="Custom" existingResponse="Replace">
      <remove statusCode="404" subStatusCode="13" />
      <remove statusCode="404" />
      <error statusCode="404"
             subStatusCode="13"
             prefixLanguageFilePath=""
             path="/Error/UploadTooLarge"
             responseMode="Redirect" />
      <error statusCode="404"
             prefixLanguageFilePath=""
             path="/Error/PageNotFound"
             responseMode="Redirect" />
    </httpErrors>
  </system.webServer>
</configuration>

Le résultat final est que tous les codes d'état normaux sont traités par Error/Error, et les codes d'état 404.13 et 404 ont une gestion personnalisée ... et de belles vues tout autour!

0
IdahoB