Arrays 尝试从Soap Web服务发送大字节[]时发生OutOfMemory异常

Arrays 尝试从Soap Web服务发送大字节[]时发生OutOfMemory异常,arrays,memory-leaks,out-of-memory,Arrays,Memory Leaks,Out Of Memory,我们有来自web服务的以下方法,该方法是从另一个应用程序调用的,用于检索数据: [WebMethod] public byte[] GetImageAsBytes(int pIdObject) { string pathOfImage = getImagePathBasedOnId(pIdObject); if (File.Exists(pathOfImage)) {

我们有来自web服务的以下方法,该方法是从另一个应用程序调用的,用于检索数据:

        [WebMethod]
        public byte[] GetImageAsBytes(int pIdObject)
        {
            string pathOfImage = getImagePathBasedOnId(pIdObject);

            if (File.Exists(pathOfImage))
            {
                byte[] result = null;
                using (MemoryStream memoryStream = new MemoryStream(1))
                {
                    using (FileStream fileStream = File.OpenRead(pathOfImage))
                    {
                        int num = -1;
                        if (fileStream.CanRead)
                        {
                            num = fileStream.ReadByte();
                        }
                        while (num != -1)
                        {
                            memoryStream.WriteByte(Convert.ToByte(num));
                            num = fileStream.ReadByte();
                        }
                        fileStream.Close();
                    }

                    result = memoryStream.ToArray();
                }
                return result;
            }

            return null;
        }
这些文件大小不同,从1KB到30MB不等。此方法可以从100个不同的客户端调用,在不同的时间段或多或少

每次调用后,内存都不会被释放,在某个时候,我们会遇到内存异常(通常是关于一个更大的文件,20-30MB)

MemoryStream和FileStream对象每次都被释放,但这还不够

有没有另一种方法可以从最多30 MB的文件中返回byte[]数组,从而减少内存消耗