Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WebApi传输字节数组为空_.net_Http_Asp.net Web Api - Fatal编程技术网

.net WebApi传输字节数组为空

.net WebApi传输字节数组为空,.net,http,asp.net-web-api,.net,Http,Asp.net Web Api,我有一个发送字节数组的简单客户端: var content = new ByteArrayContent(wav); httpClient.PostAsync(@"http://localhost:12080/api/values", content); 以及接收post请求的简单服务器: [HttpPost] public string Post([FromBody]byte[] parms) { //bla bla } 问题是我将null作为传入参

我有一个发送字节数组的简单客户端:

var content = new ByteArrayContent(wav);
httpClient.PostAsync(@"http://localhost:12080/api/values", content);
以及接收post请求的简单服务器:

[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") }
}
[HttpPost]
公共异步任务Post()
{
byte[]parms=wait Request.Content.ReadAsByteArray();
返回新的HttpResponseMessage{Content=StringContent(“我的文本/普通响应”)}
}

不幸的是,因为Content.ReadAsXXX方法都是异步的,所以有必要让Action方法返回任务。您确实需要避免在ASP.NET管道下托管的任何Web API中使用.Result和.Wait,因为这会导致死锁。

请在初始化
wav
object.small correction byte[]parms=Wait Request.Content.ReadAsByteArrayAsync()的位置添加代码;