Javascript 如何修复文件上载时的InputStream ReadTimeout错误

Javascript 如何修复文件上载时的InputStream ReadTimeout错误,javascript,c#,asp.net-mvc,file-upload,email-attachments,Javascript,C#,Asp.net Mvc,File Upload,Email Attachments,我的设置:asp.net mvc web应用程序,带有简单的电子邮件表单和文件上载和发送按钮 电子邮件已正确发送,文件已附加-但附件为空。 调试控制器会在表达式var myFiles=model.myFiles中给出一个InputStream.ReadTimeout(参见下面的控制器代码) 型号(仅零件) 控制器 [HttpPost] public ActionResult SendCompanyEmail(GeneralEmailViewModel model) { ... v

我的设置:asp.net mvc web应用程序,带有简单的电子邮件表单和文件上载和发送按钮

电子邮件已正确发送,文件已附加-但附件为空。 调试控制器会在表达式
var myFiles=model.myFiles中给出一个InputStream.ReadTimeout(参见下面的控制器代码)

型号(仅零件)

控制器

[HttpPost]
public ActionResult SendCompanyEmail(GeneralEmailViewModel model)
{
    ...
    var myFiles = model.MyFiles; // here occurs the ReadTimeout
    if (myFiles != null)
    {
        foreach (var file in myFiles)
        {
            if (file != null && file.ContentLength > 0)
            {
                MemoryStream stream = new MemoryStream(file.ContentLength);
                stream.Position = 0;
                attachements.Add(new EmailAttachments
                {
                    FileName = file.FileName,
                    ContentType = file.ContentType,
                    Stream = stream,
                });
            }
        }
    }
// ... code for sending the email ...
}

读取超时的原因可能是什么以及如何解决它的任何建议?

用于构建附件的控制器代码有错误。 我找到了一个工作代码:

    if (myFiles != null)
    {
        foreach (var file in myFiles)
        {
            if (file != null && file.ContentLength > 0)
            {
                //MemoryStream stream = new MemoryStream(file.ContentLength);
                //stream.Position = 0;
                attachements.Add(new EmailAttachments
                {
                    FileName = file.FileName,
                    ContentType = file.ContentType,
                    Stream = file.InputStream
                });

            }
        }
    }
调试控制器时,仍可读取InputStream.ReadTimeout
消息。我不知道这是否只是一个毫无意义的信息

不管怎样,我在原始帖子中概述的方法和上面给出的更正对于上传文件并将其转换为电子邮件附件来说是正确的

 $(function () {

    $("#send").click(function () {
         var form = $("#data");
         var formData = new FormData(form[0]);

         var files = form.find("#files")[0].files;

         $.each(files, function() {
           var file = $(this);
           formData.append(file[0].name, file[0]);
         });

         $.ajax({
             type: "POST",
             url: url,
             data: formData,
             contentType: false,
             processData: false,
             success: function (response) {
                 alert("Success");
             },
             error: function (response) {
                 alert("Error");
             }
         });

    });
[HttpPost]
public ActionResult SendCompanyEmail(GeneralEmailViewModel model)
{
    ...
    var myFiles = model.MyFiles; // here occurs the ReadTimeout
    if (myFiles != null)
    {
        foreach (var file in myFiles)
        {
            if (file != null && file.ContentLength > 0)
            {
                MemoryStream stream = new MemoryStream(file.ContentLength);
                stream.Position = 0;
                attachements.Add(new EmailAttachments
                {
                    FileName = file.FileName,
                    ContentType = file.ContentType,
                    Stream = stream,
                });
            }
        }
    }
// ... code for sending the email ...
}
    if (myFiles != null)
    {
        foreach (var file in myFiles)
        {
            if (file != null && file.ContentLength > 0)
            {
                //MemoryStream stream = new MemoryStream(file.ContentLength);
                //stream.Position = 0;
                attachements.Add(new EmailAttachments
                {
                    FileName = file.FileName,
                    ContentType = file.ContentType,
                    Stream = file.InputStream
                });

            }
        }
    }