Asp.net mvc 5 在tempdatamvc中保存流#

Asp.net mvc 5 在tempdatamvc中保存流#,asp.net-mvc-5,Asp.net Mvc 5,您好,我正在使用asp.net mvc5将一个大文件上载到服务器,在Controller中,我正在将此流保存到TempData中。在我的本地计算机上,它工作正常,并成功上载了大文件。但在托管服务器上,它失败了。我尝试过增加MaxAllowedContent和ExecutionTimeout限制,但都不起作用。有人可以帮助我吗这个 这是我的控制器动作 public ActionResult UploadTransactionPDF() { private read

您好,我正在使用asp.net mvc5将一个大文件上载到服务器,在Controller中,我正在将此流保存到TempData中。在我的本地计算机上,它工作正常,并成功上载了大文件。但在托管服务器上,它失败了。我尝试过增加MaxAllowedContent和ExecutionTimeout限制,但都不起作用。有人可以帮助我吗这个

这是我的控制器动作

 public ActionResult UploadTransactionPDF()
        {
        private readonly List<MemoryStream> _PdfImage = new List<MemoryStream>();

        private readonly List<string> _PdfImageNames = new List<string>();
            try
            {
                Gateway.Instance.Logger.LogInfo(string.Format(_formatProvider,"[TransactionController  -> UploadTransactionPDF ]: method started : Save pdf to memory."));

                if (CheckFileExist())
                {
                    if (TempData[TransactionRef.PdfFiles.ToString()] != null)
                    {
                        _PdfImage.Clear();
                        _PdfImage.AddRange(TempData[TransactionRef.PdfFiles.ToString()] as List<MemoryStream>);
                    }

                    if (TempData[TransactionRef.PdfFileName.ToString()] != null && !string.IsNullOrEmpty(TempData[TransactionRef.PdfFileName.ToString()].ToString()))
                    {
                        _PdfImageNames.Clear();
                        _PdfImageNames.AddRange(TempData[TransactionRef.PdfFileName.ToString()] as List<string>);
                    }

                    for (int a = 0; a < Request.Files.Count; a++)
                    {
                        if (!_PdfImageNames.Contains(Request.Files[a].FileName))
                        {
                            MemoryStream ms = new MemoryStream();
                            Request.Files[a].InputStream.CopyTo(ms);
                            _PdfImage.Add(ms);
                            _PdfImageNames.Add(Request.Files[a].FileName);
                        }
                    }

                    TempData[TransactionRef.PdfFiles.ToString()] = _PdfImage;
                    TempData[TransactionRef.PdfFileName.ToString()] = _PdfImageNames;
                    ViewBag.Info = "pdf";
                    ViewBag.ImageUploadInfo = Language.ImageSavedMessage.ToString();
                }
                else
                {
                    ViewBag.ImageUploadInfo = Language.NoFileMessage.ToString();
                }

                ViewBag.FileNames = _PdfImageNames;
                Gateway.Instance.Logger.LogInfo(string.Format(_formatProvider, "[TransactionController  -> UploadTransactionPDF ] : method exited ."));
                return View("_PDFFiles");
            }
            catch (Exception ex)
            {
                string errorInfo = string.Format(_formatProvider, "[TransactionController  -> UploadTransactionPDF ]  : Error : '{0}' occurred while saving pdf to memory.",ex.Message);
                Gateway.Instance.Logger.LogError(errorInfo,ex);
                throw new Exception(errorInfo, ex);
            }
        }
public ActionResult UploadTransactionPDF()
{
私有只读列表_PdfImage=new List();
私有只读列表_PdfImageNames=新列表();
尝试
{
Gateway.Instance.Logger.LogInfo(string.Format(_formatProvider,“[TransactionController->UploadTransactionPDF]:方法已启动:将pdf保存到内存。”);
if(CheckFileExist())
{
if(TempData[TransactionRef.PdfFiles.ToString()]!=null)
{
_PdfImage.Clear();
_PdfImage.AddRange(TempData[TransactionRef.PdfFiles.ToString()]作为列表);
}
if(TempData[TransactionRef.PdfFileName.ToString()!=null&&!string.IsNullOrEmpty(TempData[TransactionRef.PdfFileName.ToString()].ToString())
{
_PdfImageNames.Clear();
_PdfImageNames.AddRange(TempData[TransactionRef.PdfFileName.ToString()]作为列表);
}
对于(int a=0;aUploadTransactionPDF]:方法已退出”);
返回视图(“PDFFiles”);
}
捕获(例外情况除外)
{
string errorInfo=string.Format(_formatProvider,“[TransactionController->UploadTransactionPDF]:将pdf保存到内存时出错:“{0}”,例如Message);
Gateway.Instance.Logger.LogError(errorInfo,ex);
抛出新异常(errorInfo,ex);
}
}

谢谢

您可以查看dev环境中的web.config与服务器上的web.config中是否存在以下内容。DDD应该是您的请求允许的最大值。不要让它达到你敞开心扉的高度。请求长度不仅仅是文件大小,而是从客户端到服务器的整个请求

<configuration>
  <system.web>
    <httpRuntime targetFramework="4.5" maxRequestLength="ddddd" />
  </system.web>
</configuration>


通过在配置和system.web元素之间添加location元素,您可以将其本地化为一个控制器操作。

您在托管服务器上收到了什么错误消息?Hi Jeff当我单击Add按钮时,同样需要花费大约2分钟的时间,然后出现连接超时错误。Hi Jeff当我单击“添加”按钮同样会花费大约2分钟的时间(仅在本地机器上的生产服务器上可以),然后出现连接超时错误。我还向你展示了我的配置文件在我的标签下,你好Bozman谢谢你的回复。我在你的建议后也尝试过。下面是我尝试过的不同配置值,但没有一个对我有效。这些应该包括在内。您是否检查了应用程序池本身的虚拟内存限制?这可能是回收和丢失请求。IIS->应用程序池->选择正确的应用程序池->高级设置,在底部应该有一个名为虚拟内存限制(kb)的设置,并确保为0表示无限。