使用ASP.Net WebAPI 2通过HTTP传输原始字节

dumble

我有一个非常简单的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会将值序列化为某种格式(JSON,XML等),具体取决于Accept标头和已安装的媒体类型格式化程序。

发送原始数据:

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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用ASP.Net WebAPI 2通过HTTP传输原始字节

来自分类Dev

使用asp.net webapi 2正确获取路由

来自分类Dev

ASP.NET WebAPI 2嵌套JSON

来自分类Dev

使用 ASP.Net WebAPI 转发流

来自分类Dev

将Http / 2与ASP.NET自托管webapi一起使用

来自分类Dev

通过ASP.NET WebAPI的OData v4.0-Excel可以使用服务吗?

来自分类Dev

ASP.NET WebApi2 OData使用斜杠/处理查询

来自分类Dev

ASP.NET webapi或SignalR?

来自分类Dev

iOS应用程序通过ASP .NET WebAPI提取数据

来自分类Dev

iOS应用程序通过ASP .NET WebAPI提取数据

来自分类Dev

ReactSample和AsP.NET Core WebApi之间的http连接

来自分类Dev

在ASP.NET WebApi中更改HTTP响应

来自分类Dev

asp.net webapi 2属性路由不起作用

来自分类Dev

ASP.NET WebAPI 2异步过滤器

来自分类Dev

ASP.Net WebApi 2示例文本属性

来自分类Dev

asp.net webapi 2属性路由不起作用

来自分类Dev

ASP.Net WebApi 2示例文本属性

来自分类Dev

使用Asp.Net WebApi + EF + Odata深度插入数据

来自分类Dev

结合使用Typeahead.js和ASP.NET WebAPI

来自分类Dev

使用jQuery发布到ASP.Net webapi

来自分类Dev

使用Thinktecture的AngularJs ASP.NET WebApi身份验证

来自分类Dev

使用TypeScript和ASP.Net WebApi进行完全键入

来自分类Dev

使用ASP.NET WebAPI发布复杂对象

来自分类Dev

ASP.NET WebApi:不允许使用(405)方法

来自分类Dev

使用ASP.NET WebApi公开现有服务层

来自分类Dev

使用Thinktecture的AngularJs ASP.NET WebApi身份验证

来自分类Dev

使用O365保护ASP.NET WebAPI

来自分类Dev

asp.net mvc5 webapi2,如何通过剃刀语法获取我的webapi网址?

来自分类Dev

PHP / ASP.NET MVC Web-Api有人知道如何使用PHP通过POST调用WEBAPI