读PUT请求体

jan*_*gan 5 .net c# asp.net-mvc asp.net-mvc-3

我有一段时间试图弄清楚为什么同一行返回请求体作为Post()中的字符串和Put()中的空字符串以及最终如何在Put()中获取请求体.

[HttpPost]
public JsonResult Post()
{
    ...
    var todoJson = new StreamReader(Request.InputStream).ReadToEnd();
    ...
}

[HttpPut]
public JsonResult Put(int id)
{
    ...
    var todoJson = new StreamReader(Request.InputStream).ReadToEnd();
    ...

}
Run Code Online (Sandbox Code Playgroud)

根据((System.Web.HttpInputStream)(Request.InputStream))._data._data我得到的Put(),字节值在请求体中,但是我无法提取内容.任何帮助非常感谢.

编辑:来自HttpRequest.InputStream文档的方法在Post()中工作,在Put()中返回一个字符串"\ 0\0\0\0\0\0\0\0\0\0\0\0\0 Content-Length的\ 0\0\0\0\0\0\0\0\0\0 ......"

jan*_*gan 11

我应该看到这个早期的Request.InputStream.Position要点到请求体的末尾,所以

Request.InputStream.Position = 0;
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.