Могу ли я узнать, почему мой InputStream истекает как для чтения, так и для записи? - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь загрузить файл в своем проекте MVC, и когда я передаю файл в контроллер через ajax, он не работает.Когда я проверяю объект HttpPostedFileBase, который передается в контроллер, все там, кроме файла.Я вижу, что ReadTimeout и WriteTimeout оба выдают ошибку «file.WriteTimeout» вызвала исключение типа System.InvalidOperationException »

Я извлек System.web и установил свойство timeout, а такжепроверка того, что файл находится в установленных пределах.Они оба в порядке.Я убедился, что мой метод записи указывает enctype = "form / multi-part data".Кажется, это все, что я могу найти.Любые предложения будут высоко оценены.

На мой взгляд это выглядит так:

@using (Html.BeginForm("UploadDocument", "ControllerName", new { id = Url.RequestContext.RouteData.Values["id"] }, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <table class="table table-condensed">
        <tr>
            <th>Upload Document</th>
            <td class="text-right">
                @Html.TextBoxFor(m => m.File, new { type = "file" })
            </td>
        </tr>
    </table>
    <input class="pull-right btn btn-success btn-sm" type="submit" 
name="btnSubmit" value="Upload" id="btnSubmit">
}   

Затем в контроллере:

[HttpPost]
    public ActionResult UploadDocument(string id, HttpPostedFileBase file) 
    {
        // Verify that the user selected a file
        if (file != null && file.ContentLength > 0)
        {
            var fileName = Path.GetFileName(file.FileName);
            if (file != null)
            {
                if (model.File.ContentLength > 0)
                {
                    var stream = file.InputStream;
                    var uploadResult = _client.module.Upload(custId, stream);
                }
            }
        }
        return RedirectToAction("NewAction", new { id = Guid.Parse(id) });
    }

И, наконец, webconfig:

<httpRuntime targetFramework="4.6.1" maxRequestLength="5120" executionTimeout="360"/>

Файл должен передаваться как часть параметра HttpPostedFileBase, но это не так, он просто выводится, и локальная версия моего API показывает, что параметр для потока имеет значение null, что и следовало ожидатьтак как файл не попадает в контроллер.Размер и тип файла передаются, поэтому я уверен, что это проблема тайм-аута.Файлы, которые я использую для тестирования, имеют размер 1,2 и 2 МБ.

Любая помощь будет принята с благодарностью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...