ASP.NET MVC:FileStreamResult 返回太多字节?

2024-05-31

我正在调用 MVC 控制器方法。 返回类型是FileStreamResult。 在此方法中,我以字节数组的形式创建图像。 我正在创建一个 MemoryStream,在构造函数中传递字节数组。 然后,我在构造函数中返回一个新的 FileStreamResult 对象,其中包含内存流对象和“image/png”,因为我的图像是 PNG。

public FileStreamResult GetImage()
    {
        ImageModel im = new ImageModel();
        var image = im.GetImageInByteArray();
        var stream = new MemoryStream(image);
        return new FileStreamResult(stream, "image/png");
    }

现在,当我从此调用中获取请求流时,我只需使用以下方法将流字符串转换为字节数组即可查看图像。 然而,在这一切完成之后,我的字节数组中的位置比从 MVC 控制器方法调用返回时多了 100 多个位置。

public static byte[] ConvertStringToBytes(string input)
    {
           MemoryStream stream = new MemoryStream();

           using (StreamWriter writer = new StreamWriter(stream))
           {
             writer.Write(input);
             writer.Flush();
           }

         return stream.ToArray();
   }

例如,在“GetImageInByteArray()”调用之后,我有“byte[256]”。 但是,当它从 MVC 调用返回并且我通过将响应字符串放入第二个方法来转换响应字符串时,我最终得到“byte[398]”;

编辑问题


当 MVC 操作返回结果时,它会通过附加在 HTTP 标头上的 ASP.NET 管道,以便请求者(浏览器)可以了解如何处理响应。

对于图像,这些标题可能包括:

Response Code
Content-Length
Content-Type

或任何其他数量的自定义或典型 HTTP 标头(更多 HTTP 标头 http://en.wikipedia.org/wiki/List_of_HTTP_header_fields).

如果我正确理解你的问题,你会将操作的整个响应转换为字节,所以很自然,你还将转换标头和请求可能返回的任何其他内容(cookie?)。

您想通过反序列化请求来实现什么目的?你想测试一些东西吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC:FileStreamResult 返回太多字节? 的相关文章

随机推荐