在我工作的地方,我们有一个 ASP.NET 页面,它使用以下代码来执行文件下载。我们使用它而不是 Request.TransmitFile() 因为文件直接来自 zip 存档。

    private void DownloadStream(Stream stream)
    {
        int bytesRead;
        int chunkSize = 1048576; //1MB
        byte[] readBuffer = new byte[chunkSize];

        while ( (bytesRead = stream.Read(readBuffer, 0, readBuffer.Length)) > 0)
        {
            if (!Response.IsClientConnected)
                break;

            Response.OutputStream.Write(readBuffer, 0, bytesRead);
            Response.Flush();
        }
    }

我正在尝试为 httpRuntime executionTimeout 设置确定一个合理的值。发送的文件大小可达 1GB,我们的一些用户使用非常慢的管道*连接到网络服务器(想想 64K 行)。我们不希望这些用户经历连接重置。但是,我们希望为站点的其余部分保留一个合理的超时值。

有没有办法只为这个特定页面定义一个 executionTimeout 设置(或者甚至专门为那个页面设置无限)?推荐的方法是什么?我知道我们最好使用完全不同的方法来提供文件(例如 FTP),但我们没有做出这种选择的自由。我们所能做的就是修改网站的代码。

另外,我确实认为这些下载内容应该在发送之前进行压缩,但那是另一回事。

*题外问题:“慢管”是一个令人讨厌的混合隐喻吗?我可能应该说“小管子”,但在这种情况下,这对我来说听起来很奇怪。意见?

最佳答案





http://www.velocityreviews.com/forums/t75299-executiontimeout.html

更多信息在这里:http://forums.asp.net/t/1235207.aspx
在这里:http://codebetter.com/blogs/peter.van.ooijen/archive/2006/06/15/146446.aspx

关于c# - 为大下载配置 httpRuntime 执行超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2210487/

10-12 12:49
查看更多