Dot-Net

WebApi 傳輸字節數組為空

  • January 10, 2017

我有一個發送字節數組的簡單客戶端:

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,因為這會導致死鎖。

引用自:https://stackoverflow.com/questions/22727848