我有一个发送字节数组的简单客户端:
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,因为您将导致死锁.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。