我可以找出为什么InputStream超时进行读写的原因吗?

时间:2019-02-12 16:30:44

标签: c# asp.net-mvc

我正在尝试在我的MVC项目中上传文件,并且当我通过ajax将文件传递给控制器​​时,它无法正常工作。当我检查传递给控制器​​的HttpPostedFileBase对象时,文件中的所有内容均存在。我可以看到ReadTimeout和WriteTimeout都给出了错误“'file.WriteTimeout'引发了System.InvalidOperationException类型的异常”

我已经检出System.web并设置了timeout属性,并检查了文件是否在限制范围内。他们都很好。我确保我的post方法指定了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"/>

fie应该作为HttpPostedFileBase参数的一部分传递,但事实并非如此,它只是在发出信号,并且我的API的本地版本显示流的参数为null,这是可以预期的,因为文件不是不能交给控制器。文件大小和类型都已传递,因此我确定这是超时问题。我用来测试的文件是1.2 MB和2MB。

任何帮助将不胜感激

0 个答案:

没有答案