Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

Upload von sehr großen Dateien in Asp.Net MVC Core 2 einstellen.

24.08.2018 (👁51122)

Problem:

Wenn man in asp.net core 2.1 mvc große Dateien oder Videos mit 200 MB oder 1,5 GB hochladen möchte, dann stellt man schnell fest,

dass der Upload des Formulars oder der ajax webapi mit dem Fehler 404.13 oder 502.3 beantwortetet wird.

Das liegt daran, dass man bei Asp.net Core die erlaubte Upload-Begrenzung vom Standard einstellen muss.

Lösung:

Ich habe jetzt gut 2 Tage um eine Lösung in Foren und bei Microsoft gesucht und endlich in einem kleinen Beitrag die Lösung gefunden

Man muss in der startup.cs die services.configure einstellen

//--< set uploadsize large files >----

services.Configure<FormOptions>(options =>

{

    options.ValueLengthLimit = int.MaxValue;

    options.MultipartBodyLengthLimit = int.MaxValue;

    options.MultipartHeadersLengthLimit = int.MaxValue;

});

//--</ set uploadsize large files >----

 

 

 

Startup.cs:

Komplette startup.cs als Referenz

Code-Sample unter https://Readdy.net

using System;

using System.Collections.Generic;

using System.Linq;

using System.Threading.Tasks;

using Microsoft.AspNetCore.Builder;

using Microsoft.AspNetCore.Identity;

using Microsoft.EntityFrameworkCore;

using Microsoft.AspNetCore.Hosting;

using Microsoft.Extensions.Configuration;

using Microsoft.Extensions.DependencyInjection;

using Readdy.Data;

using Readdy.Models;

using Readdy.Services;

using Microsoft.AspNetCore.Rewrite;

using Microsoft.AspNetCore.Http;

using Microsoft.AspNetCore.Http.Features;

 

namespace Readdy

{

    public class Startup

    {

 

 

        public Startup(IHostingEnvironment env)

        {

            var builder = new ConfigurationBuilder();

            builder.AddUserSecrets<Startup>();

 

            Configuration = builder.Build();

        }

 

        public IConfiguration Configuration { get; }

 

        // This method gets called by the runtime. Use this method to add services to the container.

        public void ConfigureServices(IServiceCollection services)

        {

            //-----------< ConfigureServices()  >-----------

            //Website_Constants.Connectionstring = Configuration["DefaultConnection"].ToString();

 

 

            services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Website_Constants.Connectionstring));

 

            //--< Facebook Api >--

            services.AddIdentity<ApplicationUserIdentityRole>(config =>

            {

                //< send Register Email >

                //*prevents registered users from logging in until their email is confirmed.

                config.SignIn.RequireConfirmedEmail = true;

                //</ send Register Email >

            })

            .AddEntityFrameworkStores<ApplicationDbContext>()

            .AddDefaultTokenProviders();

 

            services.AddAuthentication().AddFacebook(facebookOptions =>

            {

                facebookOptions.AppId = Website_Constants.fp_appID;

                facebookOptions.AppSecret = Website_Constants.fp_secret;

            });

            //--</ Facebook Api >--

 

 

            // Add application services.

            services.AddTransient<IEmailSenderEmailSender>();

 

            var optRewrite = new RewriteOptions()

            .AddRedirectToHttpsPermanent();

 

 

            services.AddMvc();

 

            //--< set uploadsize large files >----

            services.Configure<FormOptions>(options =>

            {

                options.ValueLengthLimit = int.MaxValue;

                options.MultipartBodyLengthLimit = int.MaxValue;

                options.MultipartHeadersLengthLimit = int.MaxValue;

            });

            //--</ set uploadsize large files >----

 

            //-----------</ ConfigureServices() >-----------

        }

 

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)

        {

            //-----------< Configure() >-----------

            if (env.IsDevelopment())

            {

                app.UseBrowserLink();

                app.UseDeveloperExceptionPage();

                app.UseDatabaseErrorPage();

            }

            else

            {

                app.UseExceptionHandler("/Home/Error");

            }

 

            #region Url_Umleitungen

            ////----< URL Umleitungen >----

            //if (env.IsProduction())

            //{

            //    //----< redirect http to https >----

            //    try

            //    {

 

            //        app.Use(async (context, next) =>

            //        {

            //        //*check the website-content and all elements like images

            //        string sHost = context.Request.Host.HasValue == true ? context.Request.Host.Value : "";  //domain without :80 port .ToString();

            //        sHost = sHost.ToLower();

            //            string sPath = context.Request.Path.HasValue == true ? context.Request.Path.Value : "";

            //            string sQuerystring = context.Request.QueryString.HasValue == true ? context.Request.QueryString.Value : "";

 

            //        //----< check https >----

            //        // check if the request is *not* using the HTTPS scheme

            //        if (!context.Request.IsHttps)

            //            {

            //            //--< is http >--

            //            string new_https_Url = "https://" + sHost;

            //                if (sPath != "")

            //                {

            //                    new_https_Url = new_https_Url + sPath;

            //                }

            //                if (sQuerystring != "")

            //                {

            //                    new_https_Url = new_https_Url + sQuerystring;

            //                }

            //                context.Response.Redirect(new_https_Url);

 

            //                return;

            //            //--</ is http >--

            //        }

            //        //----</ check https >----

 

            //        //----< check www >----

            //        if (sHost.IndexOf("www.") == 0)

            //            {

            //            //--< is www. >--

            //            string new_Url_without_www = "https://" + sHost.Replace("www.", "");

            //                if (sPath != "")

            //                {

            //                    new_Url_without_www = new_Url_without_www + sPath;

            //                }

            //                if (sQuerystring != "")

            //                {

            //                    new_Url_without_www = new_Url_without_www + sQuerystring;

            //                }

            //                context.Response.Redirect(new_Url_without_www);

 

            //                return;

            //            //--</ is http >--

            //        }

            //        //----</ check www >----

 

            //        //also check images inside the content

            //        await next();

            //        });

 

            //    }

            //    catch (Exception)

            //    {

 

            //        //throw;

            //    }

            //    //----< redirect http to https >----

 

            //    //----< redirecturl >----

            //    try

            //    {

 

            //        app.Use(async (context, next) =>

            //        {

            //            string sHost = context.Request.Host.HasValue == true ? context.Request.Host.Value : "";  //domain without :80 port .ToString();

            //        sHost = sHost.ToLower();

            //            string sPath = context.Request.Path.HasValue == true ? context.Request.Path.Value : "";

 

            //            if (sPath.Length > 1)

            //            {

            //                string sTest = sPath.Substring(1, 1);

            //                if (int.TryParse(sTest, out int i0))

            //                {

            //                    string sNr_Test = sPath.Substring(1);

            //                    long PathNr;

            //                    if (long.TryParse(sNr_Test, out PathNr))

            //                    {

            //                    //--< path isNumeric >--

            //                    string new_Url = "https://" + sHost + "/Notes/Details" + sPath;

            //                        context.Response.Redirect(new_Url);

 

            //                        return;

            //                    //--</ path isNumeric >--

            //                }

            //                }

            //            }

            //        //----</ check www >----

            //        await next();

            //        });

 

            //    }

            //    catch (Exception)

            //    {

 

            //        //throw;

            //    }

            //    //----< redirect url >----

 

            //    //----< DeviceSwitcher Mobile Desktop >----

            //    //*MobileDesktop_Parameter_to_Cookie

            //    try

            //    {

            //        app.Use(async (context, next) =>

            //        {

            //        //----< check Parameter >----

            //        //*Parameter ?v=ViewDevice m=Mobile oder d=Desktop

            //        var queryParameter_DeviceSwitcher = context.Request.Query["ds"].FirstOrDefault();

            //            if (queryParameter_DeviceSwitcher != null)

            //            {

            //            //--< DeviceSwitcher >--

            //            //*has DeviceSwitcher as Parameter

            //            //*sendback as   cookie 

            //            CookieOptions options = new CookieOptions();

            //                options.Expires = DateTime.Now.AddDays(100);

            //                context.Response.Cookies.Append("ds", queryParameter_DeviceSwitcher, options);

            //            //--</ DeviceSwitcher >--

            //        }

            //        //----</ check Parameter >----

 

 

 

            //        //also check images inside the content

            //        await next();

            //        });

 

            //    }

            //    catch (Exception)

            //    {

 

            //        //throw;

            //    }

            //    //----</ DeviceSwitcher Mobile Desktop >----

            //}

            ////----</ URL Umleitungen >----

 

            #endregion /Url_Umleitungen

 

            app.UseStaticFiles();

 

            app.UseAuthentication();

 

            app.UseMvc(routes =>

            {

 

                //--< Emoticons >--

                routes.MapRoute(

                   name: "🏠",

                   template: "🏠",

                   defaults: new { controller = "Home", action = "Index" }

               );

                routes.MapRoute(

                name: "📢",

                template: "📢",

                defaults: new { controller = "Home", action = "Index" }

                );

                routes.MapRoute(

                   name: "📜",

                   template: "📜",

                   defaults: new { controller = "Notes", action = "Index_all" }

                );

                //--</ Emoticons >--

 

                routes.MapRoute(

                   name: "Notes"// Route name

                   template: "Notes"// URL with parameters

                   defaults: new { controller = "Notes", action = "Index_all" }

               );

 

 

                routes.MapRoute(

                    name: "default",

                    template: "{controller=Notes}/{action=Index_all}/{id?}");

 

            }

            );

 

 

            //seed dbContext 

            Database.EF_Model.Initialize_DbContext_in_Startup(app.ApplicationServices);

            //-----------</ Configure()  >-----------

        }

    }

}

 

 

In der Web.config habe wie üblich die requestFiltering ergänzt.

Wenn diese fehlen, dann entsteht der Fehler 404

    <!--Limit Upload-->

    <!--*to 1GB=1073741824-->

    <security>

      <requestFiltering>

        <requestLimits maxAllowedContentLength="1073741824" />  

      </requestFiltering>

    </security>

    <!--/ Limit Upload-->

Web.config in asp.net core

Wenn keine web.config im Projekt vorhanden ist, dann kann man über project->add eine config Datei einfügen

 

Komplette web.config als Code

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  <system.webServer>

    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" requestTimeout="01:00:00" />

    <handlers>

      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />

    </handlers>

  

  

    <!--Limit Upload-->

    <!--*to 1GB=1073741824-->

    <security>

      <requestFiltering>

        <requestLimits maxAllowedContentLength="1073741824" />  

      </requestFiltering>

    </security>

    <!--/ Limit Upload-->

  </system.webServer>

 

</configuration>

Program.cs

In der program.cs kann man die Timeouts einstellen.

.UseKestrel(options =>

{

    options.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(120);

    options.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(120);

})

In visual Studio

Kompletter C# Code für program.cs

using System;

using Microsoft.AspNetCore;

using Microsoft.AspNetCore.Hosting;

 

 

namespace Readdy

{

    public class Program

    {

        //--------< class: Program >--------

        public static void Main(string[] args)

        {

            BuildWebHost(args).Run();

        }

 

        public static IWebHost BuildWebHost(string[] args) =>

            WebHost.CreateDefaultBuilder(args)

            

            

            .UseIISIntegration() //*!! Important Asp.Net Core2 on IIS !!

 

            //< set upload timeout >

            .UseKestrel(options =>

            {

                options.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(120);

                options.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(120);

                //options.Limits.MaxRequestBodySize = 500_000_000;

                //options.Limits.MaxRequestBufferSize = null;

                //options.Limits.MaxResponseBufferSize = null;

            })

            //</ set upload timeout >

 

            .UseStartup<Startup>()

 

            .Build()

            ;

        //--------</ class: Program >--------

    }

}

 

 

Asp.Net Core MVC Controller

In der eigentlichen Controller Methode kann man dann die Upload-Grenzen nochmals speziefisch für diese Methode einstellen.

Hierzu kann man das Attribut RequestSizeLimit vor die Methode stellen

//[DisableRequestSizeLimit]

[RequestSizeLimit(500000000)]  //30.000.000=28,6MB

Controller

Komplette Upload-Methode im Controller als Refernz

[HttpPost]

[Authorize]

//[DisableRequestSizeLimit]

[RequestSizeLimit(500000000)]  //30.000.000=28,6MB

public async Task<IActionResult> Edit_Upload_Video()

{

    // -------------< Edit_Upload_Video() > -------------

    try

    {

        //------< try_upload_Video >--------

        //string sFiles_uploaded = "";

        List<string> response_list_of_Filenames = new List<string>();

 

        //< get ID and SubNr >

        //*from Querysting like Notes/Edit_Upload_Images?IDNote=11&ImageNr=1

        string sIDNote = Request.Query["IDNote"];

        long IDNote = System.Convert.ToInt64(sIDNote);

        //</ get ID and SubNr >

 

        //--< Get User ID >--

        //internal referenz-Number for tracking in tables

        long IDCurrent_User = await UserInfo_Methods.getIDUser_as_Number(this.User, _dbContext);

        //--</ Get User ID >--

 

        //< get_database >

        NoteModel note;

        if (IDNote == 0)

        {

            note = _dbContext.tbl_Notes.SingleOrDefault(n => n.IDUser == IDCurrent_User && n.IsDraft == true);

            if (note == null)

            {

                note = new NoteModel();

                note.IsDraft = true;

                note.DtCreated = DateTime.Now;

                note.IDUser = IDCurrent_User;

                note.Title = "#";

                note.sumImages = 0;

                note.DtEdit = DateTime.Now;

 

                //< save >

                await _dbContext.tbl_Notes.AddAsync(note); //IDNote: 0->-99999

                await _dbContext.SaveChangesAsync(true);       //IDNote: -99999->16

                                                               //</ save >

 

                //< new ID >

                IDNote = note.IDNote;

                //Console.WriteLine("new IDNote=" + note.IDNote);

                //</ new ID >

            }

            else

            {

                //< last draft >

                IDNote = note.IDNote;

                //</ last draft >

            }

        }

        else

        {

            note = _dbContext.tbl_Notes.SingleOrDefault(n => n.IDNote == IDNote);

        }

 

        if (note == null) { return Json("NoMatch for IDNote=" + IDNote); }

        //</ get_database >

 

        //< add_response >

        response_list_of_Filenames.Add("IDNote=" + IDNote);

        //</ add_response >

 

 

        //< check Owner >

        long IDOwner = note.IDUser;

        if (IDOwner != IDCurrent_User) { return Content("You are not the Owner"); }

        //</ check Owner >

 

 

 

 

        //< init >

        //long uploaded_size = 0;

        string path_for_Uploaded_Files = _hostingEnvironment.WebRootPath + "\\User_Files\\Notes\\Videos";

        //</ init >

 

        //< get form_files >

        //IFormFile uploaded_File

        var uploaded_files = Request.Form.Files;

        //</ get form_files >

 

        //--< get last Image >--

        //*get User Summary Table

        Note_Video_Model videoData = new Note_Video_Model();

 

        //< last_Image >

        Note_Video_Model video = await _dbContext.tbl_Notes_Videos.Where(vid => vid.IDNote == IDNote).FirstOrDefaultAsync();

        int videoNr = 0;

        //</ last_Image >

        //------< @Loop: Uploaded Files >------            

        foreach (var uploaded_file in uploaded_files)

        {

            //----< Uploaded File >----

            try

            {

                if (uploaded_file.ContentType.IndexOf("video") == 0)   //*video/mp4

                {

                    //------< Is_TypeVideo >------

                    string uploaded_Filename = uploaded_file.FileName;

                    int posExtension = uploaded_Filename.LastIndexOf(".");

                    string sExtension = uploaded_Filename.Substring(posExtension + 1);

                    sExtension = sExtension.ToLower();

 

 

                    if (" .mp4 .mov".IndexOf("." + sExtension) > 0)

                    {

                        //----< Is_Video >----

 

                        //--< New Note_Image >--

                        Note_Video_Model newVideoData = new Note_Video_Model();

                        newVideoData.IDNote = IDNote;

                        newVideoData.dtCreate = DateTime.Now;

                        newVideoData.VideoNr = videoNr;

 

                        //< save ImageData >

                        await _dbContext.tbl_Notes_Videos.AddAsync(newVideoData);

                        await _dbContext.SaveChangesAsync(true);

                        //</ save ImageData >

 

                        //< add_response >

                        response_list_of_Filenames.Add("Video_" + IDNote + "_0");

                        //</ add_response >

 

                        //< Filename >

                        string image_webname = "Video_" + IDNote + "_0." + sExtension;

                        string new_FullFilename_on_Server = path_for_Uploaded_Files + "\\" + image_webname;

                        //</ Filename >

 

 

                        //< Copy File to Target >

                        if (System.IO.File.Exists(new_FullFilename_on_Server)) { System.IO.File.Delete(new_FullFilename_on_Server); }

                        using (FileStream stream = new FileStream(new_FullFilename_on_Server, FileMode.Create))

                        {

                            await uploaded_file.CopyToAsync(stream);

                        }

                        //</ Copy File to Target >

 

                        //----< check Properties >----

 

                        //----</ check Properties >----

 

                        if (sExtension != "mp4")

                        {

                            //----< IsNot_Mp4 >----

 

                            //< convert >

                            //</ convert >

                            //----</ IsNot_Mp4 >----

                        }

                        else

                        {

 

                        }

 

                        //----</ Is_jpg >----

                    }

                    //------</ Is_TypeImage >------

                }

            }

            catch (System.Exception ex)  //ex

            {

                //< error >

                response_list_of_Filenames.Add("Error:" + ex.Message + Environment.NewLine + ex.StackTrace);

                //Console.WriteLine(ex.Message);

                //</ error >

            }

            //----</ Uploaded File >----

 

            break//only 1 Video

        }

        //------</ @Loop: Uploaded Files >------

 

        //----< Save Data >----

        //--< data >--

        note.sumVideos = 1;

        note.DtEdit = DateTime.Now;

        //--</ data >--

 

        try

        {

            //todo: _dbContext.Update(note);

            await _dbContext.SaveChangesAsync(true);

        }

        catch (DbUpdateConcurrencyException)

        {

            return Content("Update Error");

        }

        //----</ Save Data >----

 

        //< response >

        return Json(response_list_of_Filenames);

        //</ response >

 

        //------</ try_upload_Video >--------

    }

    catch (Exception ex)

    {

        //------< fail: try_upload_Video >--------

        string sError = "Upload Video Error: " + ex.Message + Environment.NewLine + ex.StackTrace ;

        return Json(sError);

        //------</ fail: try_upload_Video >--------

    }

 

    // -------------</ Edit_Upload_Video() > -------------

}

 

 

 

Browser Upload ajax

 

Und dann noch final die aufrufende Upload Video funktion im Browser Client. in jQuery ajax upload

function editor_Upload_Video_Files() {

    //------< editor_Upload_Video_Files() >------

 

    //--< get selected files >--

    var fileUpload = $("#files_input_field").get(0);

    var files = fileUpload.files;

    if (files.length == 0) return;

 

    //< status >

    $("#ctlProgress").css("visibility""visible");

    //</ status >

    //< load into FormData >

    //only 1.file

    var data = new FormData();

    data.append(files[0].name, files[0]);

    //</ load into FormData >

    

    //--< ajax upload >--

    $.ajax({

        type: "POST",

        url: "/Notes/Edit_Upload_Video?IDNote=" + IDNote,

        xhr: function () {

            var xhr = new window.XMLHttpRequest();

            //Upload progress

            xhr.upload.addEventListener("progress"function (evt) {

                if (evt.lengthComputable) {

                    var percentComplete = evt.loaded / evt.total;

                    $("#ctlProgress").val(percentComplete * 100);

                    if (percentComplete > 0.9) {

                        $("#ctlProgress").css("visibility""visible");

                    }

                }

            }, false);

            //Download progress

            xhr.addEventListener("progress"function (evt) {

                if (evt.lengthComputable) {

                    var percentComplete = evt.loaded / evt.total;

                    //Do something with download progress

                    console.log(percentComplete);

                }

            }, false);

            return xhr;

        },

 

        contentType: false,  //default: 'application/x-www-form-urlencoded; charset=UTF-8'

        processData: false,  //default: data, other DOMDocument

        data: data,          //Type: PlainObject or String or Array

        //jQuery 1.8 success->done error->fail

        success: function (json_down_data) {

            //----< ajax_after_Upload_Successfull() >----

            $("#ctlProgress").css("visibility""hidden");

 

            //---< show return >---

            //---< Insert Video >---

            //--< Loop: each Result >--

            //$.each(data, function (index, item)

            var arrData = json_down_data;

            for (var i = 0; i < arrData.length; i++) {

                //--< Item  >--

                var item = arrData[i];

                if (item.indexOf("IDNote=") == 0) {

                    //--< set ID >--

                    if (IDNote == "0") {

                        IDNote = item.substring(7);

                        document.getElementById("Note_IDNote").value = IDNote;

                        document.getElementById("frmEdit").action = "/Notes/Edit/" + IDNote;

                        //#todo on 0

                    }

                    //--</ set ID >--

                }

                else if (item.indexOf("Error") == 0) {

                    //--< set ID >--

                    alert(item);

                    //--</ set ID >--

                }

                else {

 

                    if (editor_check_Video_exists(item) == false) {

                        //--< add Image >--

                        var divEditor = document.getElementById("ctlEditor_HTML");

                        

 

                        //*show uploaded Image in div-Results

                        var br = document.createElement("br");

                        divEditor.insertBefore(br, divEditor.childNodes[0]);

 

                        //< create image >

                        var video = document.createElement("video");

                        video.src = "/User_Files/Notes/Videos/" + item + ".mp4"

                        video.setAttribute("width","640");

                        video.setAttribute("height""480");

                        video.setAttribute("controls","");

                        //video.setAttribute("autoplay","");

                        video.style.width = "100%";

                        video.style.maxWidth = "100%";

                        video.style.height = "auto";

                        video.style.display = "block";

                        video.style.borderWidth = "2px";

                        video.style.borderColor = "black";

                        video.style.borderStyle = "solid";

                        //</ create image >

                        //*at position 0

                        divEditor.insertBefore(video, divEditor.childNodes[0]);

 

                        var ctlTitle = document.getElementById("ctlTitle");

                        ctlTitle.value = "🎬 " + ctlTitle.value;

 

 

                        save();

 

                        //var txtVideo = document.createTextNode("🎞");

                        //if (ctlTitle.childNodes.length > 0)

                        //{ ctlTitle.insertBefore(txtVideo, ctlTitle.childNodes[0]); }

                        //else

                        //{ ctlTitle.appendChild(txtVideo); }

                        

                        

                        //--< add Video >--

                    }

                    //--</ Item >--

                }

                //--</ Loop: each Result >--

                //---</ Insert Video >---

            }

 

            //---</ show return >---

            //----</ ajax_after_Upload_Successfull() >----

        },

        error: function (request, status, error) {

            alert("Errortext:\n" + request.responseText);

        }

    });

    //--</ ajax upload >--

    //------</ editor_Upload_Video_Files() >------

 

}

Fehler-Dokumentation:

Bis zur Lösung..

502 Webserver hat als Gateway oder Proxyserver eine ungültige Antwort erhalten

Upload 435 MB auf Asp.Net Core im Productiv-System.

Log Script beim suchen der Lösung

Lösung:

18:15

webconfig on 1GB

18:24

system web und webserver in web.config

502.3 bad gateway

 

17:56

setting in progam-kestrel und controller auf 500

Error 404.13 Not Found

 

17:52

[RequestSizeLimit(500_000)]

removed all settings

Error 404.13 

 

 

 

17:41

[RequestSizeLimit(500_000)]

all settings

Error 502.3 

 

<requestLimits maxAllowedContentLength="500000000" />

[RequestSizeLimit(500_000_000)]

options.Limits.MaxRequestBodySize = 500_000_000;

-->ergibt viedeo aber kaputt.... keine Datei

 

[DisableRequestSizeLimit]

->502.3 Bad Gateway

 

<requestLimits maxAllowedContentLength="3000000000" />

[RequestSizeLimit(400_000_000)] 

->502.3 Bad Gateway

 

 

 

[RequestSizeLimit(300000000)]

<requestLimits maxAllowedContentLength="300000000" />

->502.3 Bad Gateway

 

[RequestSizeLimit(300*1024)]

options.Limits.MaxRequestBodySize = null;

<requestLimits maxAllowedContentLength="3000000000" />

502.3 Bad Gateway

 

 

[RequestSizeLimit(0)]

options.Limits.MaxRequestBodySize = null;

<requestLimits maxAllowedContentLength="3000000000" />

502.3 Bad Gateway

 

 

 

<requestLimits maxAllowedContentLength="3000000000" />

 [RequestSizeLimit(1000000000000000000)]  //30.000.000=28,6MB

 

 

[RequestSizeLimit(300000000)]  //30.000.000=28,6MB

502.3 Bad Gateway

 

 

[RequestSizeLimit(500000000)]

Folge: 502.3 Bad Gateway