【问题标题】:ASPX C# page timing outASPX C# 页面超时
【发布时间】:2023-04-09 02:06:02
【问题描述】:

我正在尝试上传文件,小文件可以工作,但大文件似乎在 2:16 后失败。我预计的最大文件长度大约需要 20 分钟,而 3600 是一个小时。我是否设置了错误的属性?

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
    <authorization>
        <deny users="?" />
    </authorization>
  <httpRuntime executionTimeout="3600" maxRequestLength="2097151" requestValidationMode="2.0"/>
</system.web>
</configuration>

【问题讨论】:

  • 知道为什么我会得到这个吗?此问题可能由多种问题引起,包括: • Internet 连接已丢失。 •该网站暂时不可用。 • 无法访问域名服务器 (DNS)。 •域名服务器(DNS) 没有网站域的列表。 •地址可能有输入错误。 •如果这是一个 HTTPS(安全)地址,单击工具,单击 Internet 选项,单击高级,然后检查以确保在安全部分下启用了 SSL 和 TLS 协议。
  • 我正在使用上传控件上传一个大文件。
  • 文件上传控件不流式传输,它将尝试将文件保存在内存中,并导致 OOM 条件或工作进程回收。请参阅我的答案以进行长时间讨论。

标签: c# asp.net visual-studio-2010


【解决方案1】:

通常的问题是接收上传文件的代码会将结果放入字节数组(byte[])

这些字节数组完全保存在内存中。根据您的操作系统版本、Web 服务器、内存量等,通常大约 800MB 的内存使用量,IIS 将回收工作进程。这样做是为了使整个服务器不会因为单个请求使用过多的内存而停机。

第三方文件上传器使用多种技术一次流式传输文件块,可用于上传多个 GB 的文件,而内存使用量不会超过几千字节。

还必须为所有涉及文件的代码层维护流技术——即,如果一个组件将它写入文件,它必须流和分块,而不是在一个字节[]中累积整个内容并写入文件。当代码最终将文件写入数据库中的 BLOB 列时也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    相关资源
    最近更新 更多