【问题标题】:Concurrent files uploads on IIS 10 never succeed and freeze the user sessionIIS 10 上的并发文件上传永远不会成功并冻结用户会话
【发布时间】:2019-08-08 08:42:22
【问题描述】:

配置:

Windows Server 2016 4Gb 内存,ASP.NET MVC 5,IIS-10,每个请求的最大上传大小:30M

问题:

异步上传5个500Ko的图片文件时,用户会话冻结,上传永远不会成功。如果我尝试从同一个浏览器访问网站的另一个页面,它就会挂起。从另一个浏览器,我可以访问网站的任何页面。用户会话挂起,直到我在 IIS 中重新启动网站。

一旦我重新启动网站,所有上传都会像往常一样恢复上传并成功,并且用户可以再次访问网站的所有页面。

到目前为止我尝试了什么:

  1. 最多 4 张 500Ko 的图像,工作正常。 如果我每张拍摄 5M 的图像,它适用于 1 次上传,但不适用于 2 次并发上传。
  2. 如果我在本地计算机上运行该网站,它工作正常。

有什么想法会导致这种情况吗?
谢谢!

【问题讨论】:

    标签: asp.net-mvc session iis asyncfileupload


    【解决方案1】:

    我遇到了完全相同的问题,白兰度的回答帮助我找到了解决方案。

    尝试将[SessionState(SessionStateBehavior.Disabled)] 添加到处理图片上传的控制器上方的行中。

    像这样:

    [SessionState(SessionStateBehavior.Disabled)]
    public class ImagesController : Controller
    {
    
    }
    

    【讨论】:

      【解决方案2】:

      根据您的描述,我猜您可能会遇到会话锁定问题。我建议你可以尝试调试诊断以捕获转储文件并分析转储文件以找出原因。

      调试诊断下载链接:https://www.microsoft.com/en-us/download/details.aspx?id=49924

      步骤: 1. 打开调试诊断并选择性能。

      1. 下一步并选择 HTTP 响应时间

      2. 点击下一步,添加带有超时值的url

      3. 点击下一步,点击添加转储目标,选择目标类型到Web应用程序池,选择正确的应用程序池
      4. 单击下一步并选择完整转储并单击下一步
      5. 输入转储规则名称并单击下一步

      更多详情,您可以参考以下文章: https://support.microsoft.com/en-ca/help/919792/how-to-use-the-debug-diagnostics-tool-to-troubleshoot-a-process-that-h

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-23
        • 2017-03-12
        • 1970-01-01
        • 2021-08-05
        • 2019-12-21
        • 1970-01-01
        • 1970-01-01
        • 2011-01-23
        相关资源
        最近更新 更多