.net – WebApi传输字节数组为空

我有一个发送字节数组的简单客户端:
var content = new ByteArrayContent(wav);
httpClient.PostAsync(@"http://localhost:12080/api/values",content);

和一个接收该帖子请求的简单服务器:

[HttpPost]
    public string Post([FromBody]byte[] parms)
    {
        //bla bla
    }

问题是我将null作为传入参数.

你知道这可能是什么问题吗?

解决方法

当您在Action方法中放置参数时,您隐含地说您希望其中一个格式化程序“序列化/反序列化”CLR对象.我很确定你不希望你的字节数组被序列化为XML或JSON.我猜你的字符串响应也一样.

对于像流,字符串和字节数组这样的原语,你只需这样做,

[HttpPost]
public async Task<HttpResponseMessage> Post()
{
    byte[] parms = await Request.Content.ReadAsByteArray();

    return new HttpResponseMessage { Content=StringContent("my text/plain response") }
}

不幸的是,因为Content.ReadAsXXX方法都是异步的,所以必须使Action方法返回一个Task.您确实需要避免在任何可能在ASP.NET管道下托管的Web API中使用.Result和.Wait,因为您将导致死锁.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....