Подтвердить что ты не робот

Получение соединения reset по ошибке сервера в asp.net mvc загрузить файл после отправки

Я прочитал несколько вопросов, объясняющих, как обрабатывать загрузки файлов в asp.net mvc. Я пытаюсь представить как файл, так и поля формы, описывающие его. Это может быть проблемой. Я напишу код:

Просмотр кода:

<% using (Html.BeginForm("CreateFile", "Video", FormMethod.Post, new { enctype = "multipart/form-data" }))

   {%>

    <fieldset>
        <legend>Fields</legend>
        <p>
            <label for="file">Filename:</label>
            <input type="file" name="file" id="file" />            
        </p>
        <p>
            <label for="Password">Password:</label>
            <%= Html.TextBox("Password")%>
            <%= Html.ValidationMessage("Password", "*")%>
        </p>
        <p>
            <label for="Description">Description:</label>
            <%= Html.TextBox("Description")%>
            <%= Html.ValidationMessage("Description", "*")%>
        </p>
        <p>
            <label for="DateUploaded">DateUploaded:</label>
            <%= Html.TextBox("DateUploaded")%>
            <%= Html.ValidationMessage("DateUploaded", "*")%>
        </p>
        <p>
            <label for="DateRecorded">DateRecorded:</label>
            <%= Html.TextBox("DateRecorded")%>
            <%= Html.ValidationMessage("DateRecorded", "*")%>
        </p>
        <p>
            <input type="submit" value="Submit" />
        </p>
    </fieldset>

<% } %>

Код контроллера:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreateFile(VideoDTO video, HttpPostedFileBase f)   //[Bind(Exclude="VideoId")]
{            
    foreach (string file in Request.Files)
    {
        HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
        if (hpf.ContentLength == 0)
            continue;
        string savedFileName = Server.MapPath("Videos") + Path.GetFileName(hpf.FileName);

        hpf.SaveAs(savedFileName);
        video.FileName = hpf.FileName;
    }

    repository.CreateVideo(video);
    return RedirectToAction("Index");            
}

Я видел несколько примеров, но не сталкивался с тем, что пытается представить как файл, так и другие данные формы. Некоторые другие примечания - другие примеры, похоже, не помещают атрибут HttpVerb в метод действия вообще и имеют пустую строку параметров. Файлы, которые я собираюсь принять, будут видеофайлы разных типов, но они могут быть где угодно от 100-300 мб. Файлы, которые я пытался использовать (локально), были сравнительно небольшими (50 или около того).

Я знаю, что меня спросили, но я чувствую, что моя проблема здесь как-то другая. Когда я отправляю страницу, я вижу:

Соединение было reset

Соединение с сервером было resetпока страница загружалась.

4b9b3361

Ответ 1

Вы настроили maxRequestLength в файле web.config? Проблема в том, что размер запроса больше, чем значение, которое вы предоставили. Измените maxRequestLength в разделе httpRuntime раздела system.web config вашего web.config, чтобы принимать большие значения.

<System.Web>
    <httpRuntime maxRequestLength="value in kilobytes" />
</System.Web>

Вам также нужно обратить внимание на значение тайм-аута.

Удачи!

Ответ 2

На веб-сервере может быть тайм-аут, потому что отправка файла занимает слишком много времени. Проверьте настройки своего веб-сервера.