所以我有一个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。
但我能知道为什么会这样吗?另外,从服务器发送回文件内容的另一种方法是什么?
答案 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内容协商修改的流。