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