存在不足的系统资源来完成所请求的服务

时间:2012-05-09 09:51:44

标签: c# iis-6

我在Windows Server 2003上的IIS 6中托管了一个Web应用程序,并且必须处理大约7-8mb的2个大型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保留在内存中?或者还有其他需要配置的东西吗?

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

见:

Why I need to read file piece by piece to buffer?

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

buffer = new byte [length];

最好的问候。