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.
si quelqu'un a une idée, Aidez-moi.
Merci.
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;
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>
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();
}
dans votre web.config:
<system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="2147483648" /> </requestFiltering> </security> </system.webServer>
éditer manuellement L'hébergeur D'application.fichier de configuration:
- 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".
- dans le menu Fichier, cliquez Ouvrir. Dans la case Nom de fichier, tapez "%windir%\system32\inetsrv\config\applicationhost.config", puis cliquez sur Ouvrir.
- Dans le
ApplicationHost.config
le fichier, recherchez le<requestLimits>
nœud. 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.Enregistrer le
ApplicationHost.config
fichier.