3

我在 Windows Server 2003 机器上的 IIS 6 中托管了一个 Web 应用程序,并且必须处理 2 个大约 7-8mb 的大型 PDF 文件,这些文件由网站从网络共享读取,并将字节传递给 WCF 服务以保存在其他地方.

这是我用来读取文件的代码:

public static byte[] ReadFile(string filePath)
{
    int count;
    int sum = 0;
    byte[] buffer;
    FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);

    try
    {
        int length = (int)stream.Length;
        buffer = new byte[length];

        while ((count = stream.Read(buffer, sum, length - sum)) > 0)
            sum += count;

        return buffer;
    }
    catch (Exception)
    {
        throw;
    }
    finally
    {
        stream.Close();
        stream.Dispose();
    }
}

上抛出一个错误stream.Read(),错误是:

系统资源不足,无法完成请求的服务

此代码在我的开发环境中有效,但一旦我发布到我们的生产环境,我们就会收到此错误消息。我已经看到这个错误已经出现了几次搜索轮次和解决方法是使用File.Move()但我们不能这样做,因为文件需要传递给 WCF 服务方法。

IIS6 中是否有需要更改以允许在读取文件时在内存中保留 15-20mb 的内容?还是还有其他需要配置的东西?

有任何想法吗?

4

1 回答 1

1

看到这个:

为什么我需要逐个读取文件以缓冲?

看来您正在阅读整个文件,没有缓冲..

缓冲区=新字节[长度];

最好的祝福。

于 2012-05-09T10:02:00.853 回答