字节数组与C#中的Web Api方法不同?

时间:2016-11-11 11:54:36

标签: c# asp.net-web-api

所以我有一个web api,它返回一个像这样的字节数组

public byte[] Validate()
{
    byte[] buffer = licensePackage.ToByteArray();
    return buffer;
}

问题是,当我在客户端上获取它时,它的大小和字节数组不同,我用Google搜索,发现此链接很有用http://www.codeproject.com/Questions/778483/How-to-Get-byte-array-properly-from-an-Web-Api-Met

但我能知道为什么会这样吗?另外,从服务器发送回文件内容的另一种方法是什么?

1 个答案:

答案 0 :(得分:1)

根据给定的信息,我认为它必须与内容协商有关。我无法分辨原因,但我确信有一种不同的方法来提供Web Api背后的文件。

var response = Request.CreateResponse(HttpStatusCode.OK);
var stream = new FileStream(pathToFile, FileMode.Open, FileAccess.Read);

response.Content = new StreamContent(stream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
return ResponseMessage(response);

使用此解决方案,您可以提供返回IHttpActionResult实例的文件内容。并且,使用StreamContent返回响应,您将返回一个不能被Web Api内容协商修改的流。