gpt4 book ai didi

c# - 使用 ASP.Net WebAPI 2 通过 http 传输原始字节

转载 作者:行者123 更新时间:2023-12-03 19:00:55 26 4
gpt4 key购买 nike

我有一个非常简单的 ASP.Net WebAPI 2 方法,我希望它能通过 HTTP 发送一小部分字节:

[Route("api/assemblybytes")]
public byte[] GetAssemblyBytes()
{
//byte[] bytes = null;
//if (File.Exists("BasePCBScreenAssembly.dll"))
//{
// using (var fs = File.Open("BasePCBScreenAssembly.dll", FileMode.Open, FileAccess.Read))
// {
// fs.Read(bytes, 0, (int)fs.Length);
// }
//}
//return bytes;
return new byte[] { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 };
}

为了测试该功能,我用包含字节 0x20 的简单数组替换了预期的代码(在上面注释掉了七次)。为了测试我的代码,我有一个简单的网页:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Assembly Distribution WebAPI Test Page</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
<script>
var uri = 'api/assemblybytes';
$(document).ready(function () {
$.getJSON(uri)
.done(function (data) {
var bytes = [];
for (var i = 0; i < data.length; ++i) {
bytes.push(data.charCodeAt(i));
}
$('#AssemblyBytes').text(bytes)
});
});
</script>
</head>
<body>
<div>
<h2>GetAssemblyBytes</h2>
<pre id='AssemblyBytes'/>
</div>
</body>
</html>

我希望通过网页查看字节数组的开头或结尾添加了哪些字节或文本。但相反,我看到了这个以及返回到网页的字节:

73,67,65,103,73,67,65,103,73,65,61,61

所以我的 0x20(十进制的 32)甚至一次都没有出现。

(注意,这似乎是一个人为的例子。实际的客户端将不是网页,而是一个 .Net Micro Framework 嵌入式设备,它将(我希望)从 WebAPI 下载小型动态程序集作为字节数组。)

我做错了什么或遗漏了什么?使用 ASP.Net WebAPI 通过 HTTP 传输字节数组的最佳方式是什么?

最佳答案

如果您不返回 HttpResponseMessage,WebAPI 将根据接受 header 和安装的媒体类型格式化程序将值序列化为某种格式(JSON、XML 等)。

发送原始数据:

HttpResponseMessage res = CreateResponse(HttpStatusCode.OK);
res.Content = new ByteArrayContent(bytes);
return res;

或者,因为你有一个 Stream:

HttpResponseMessage res = CreateResponse(HttpStatusCode.OK);
res.Content = new StreamContent(File.Open(...));
return res;

关于c# - 使用 ASP.Net WebAPI 2 通过 http 传输原始字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21347877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com