ajax возвращает ошибку 404 / не удается найти контроллер при загрузке нескольких файлов ASP.net - PullRequest
0 голосов
/ 12 февраля 2019

Кажется, что мой ajax не может найти контроллер при загрузке нескольких файлов большого размера

Мой взгляд:

<input type="file" id="examen_ingresar" name="examen_ingresar" multiple>

Мои Js:

$.ajax({
    type: "POST",
    url: '/Analisis/IngresarExamen?id_analisis=' + id_analisis ,
    contentType: false,
    processData: false,
    data: data,
    success: function (result) {
        retorno = result;
    },
    error: function (xhr, status, p3, p4) {
        var err = "Error " + " " + status + " " + p3 + " " + p4;
        if (xhr.responseText && xhr.responseText[0] == "{")
            err = JSON.parse(xhr.responseText).Message;
        console.log(err);                    
        }
});

AnalisisController.cs:

[HttpPost]
public JsonResult IngresarExamen(long id_analisis)
{
    int retorno = 0;
    try
    {
        for (int i = 0; i < Request.Files.Count; i++)
        {
            HttpPostedFileBase file = Request.Files[i];
            string direccion = Path.Combine(Server.MapPath("/AppUploads/" + id_analisis), Guid.NewGuid() + Path.GetExtension(file.FileName));
            System.IO.Directory.CreateDirectory(Server.MapPath("/AppUploads/"+ id_analisis));
            retorno += amodel.IngresarExamen(id_analisis, direccion);//Just a method that make the register, if it's ok returns 0
            System.IO.Stream fileContent = file.InputStream;
            file.SaveAs(Path.Combine(direccion));
        }
    }
    catch (Exception)
    {
        retorno++;
        Response.StatusCode = (int)HttpStatusCode.BadRequest;
    }
    return Json(retorno);
}

Я также добавил эти строки в Web.config, потому что, возможно, это может быть по размеру файла (позволяя загрузить 5 ГБ)

<system.web>
    <httpRuntime targetFramework="4.6.1" maxRequestLength="5242880" executionTimeout="2400" />
    <compilation debug="true" targetFramework="4.6.1"/>
</system.web>

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="5242880"/>
        </requestFiltering>
    </security>
</system.webServer>

Это на самом деле работаетдля некоторых маленьких файлов, поэтому я тестирую его с 3 файлами, которые составляют 1 ГБ, примерно через 5 секунд он показывает в консоли браузера:

POST http://localhost:60139/Analisis/IngresarExamen?id_analisis=40 404 (Not Found)

1 Ответ

0 голосов
/ 14 февраля 2019

через некоторое время после поиска я распознаю свою ошибку и на самом деле нахожусь в Web.config

<system.web>
    <httpRuntime targetFramework="4.6.1" maxRequestLength="5242880" executionTimeout="2400" />
    <compilation debug="true" targetFramework="4.6.1"/>
</system.web>

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="5242880"/>
        </requestFiltering>
    </security>
</system.webServer>

->maxRequestLength is in kb
->executionTimeout is in seconds
->maxAllowedContentLength is in BYTES

, поэтому, если вы получаете эту же проблему, попробуйте изменить эти значения на те, которые вам нужны, ТАКЖЕ maxAllowedContentLength maxзначение равно 4 ГБ, если вы не используете другой метод для загрузки файлов

...