这是在OWIN& .Net 4.5.2
使用debug我证明这个控制器的方法正在被web请求调用。
我的事情是请求正文包含一个JSON字符串化对象:
“{'id':'12','text1':'hello','test2':'world'}”
适用于编码,因为它在线路上传输。
我已经尝试了很多我现在很困惑的事情。
如何获取已解码的字符串以便我可以使用JSON.Parse()或更好地获取.Net来给我一个对象?
在一个版本中(很久以前),我为这个对象定义了一个类型。如果我需要那么伟大,而不是一个很高的挑战。但是,如果我只有字符串中的JSON对象也可以。
public class cController : ApiController {
[HttpPut]
public string put(string id) {
var bdy = this.Request.Content;
//Console.WriteLine("PUT containers {0}", body);
return string.Empty;
}
}
如果有帮助,bdy.ContentReadStream
为空。我不知道这是好的,坏的还是重要的。也许Request.Content
不是要走的路,但在我看来,如果我要将身体作为流阅读,那么它不应该是空的。
我也尝试过System.Web.HttpContext
。如果这是某种答案我回到那个问题没有问题。但我找不到秘密酱。
答案 0 :(得分:3)
将所需的模型作为参数传递给操作,框架工作应该能够解析它,只要它是有效的JSON
public class cController : ApiController {
[HttpPut]
public IHttpActionResult Put(string id,[FromBody] Model body) {
if(ModelState.IsValue) {
return Ok(body.text1);
}
return BadRequest();
}
}
Model
定义为
public class Model {
public string id { get; set; }
public string text1 { get; set; }
public string test2 { get; set; }
}