如何从剃须刀页面读取身体?过程不断

时间:2018-09-05 13:21:37

标签: c# asp.net-core-2.1

我正在使用以下javascript代码发送数据:

xhr = new XMLHttpRequest();
xhr.addEventListener('readystatechange', onStateChange);
xhr.open('POST', 'SavePage');
xhr.setRequestHeader('RequestVerificationToken', token);
xhr.send(payload);

然后在我的SavePage.cshtml文件中,我尝试以多种不同的方式直接从正文读取内容,我获得了Content-Length,并且知道我的数据长162个字节。

我尝试了这个简单的例子:

var buffer = new byte[1024];
var info = HttpContext.Request.Body.Read(buffer, 0, 5);

代码进入第二行,然后只是挂起,我尝试以各种方式将代码挂起。如果我尝试从HttpContext.Request.Form读取,它也会挂起。

当我检查Chrome时,这是发布的内容:

------WebKitFormBoundary2uFNJ1OvmPRrGH1P
Content-Disposition: form-data; name="main-content"

<p>
test
</p>
------WebKitFormBoundary2uFNJ1OvmPRrGH1P--

我在这里想念的是什么,我是否应该只能从身体上阅读? 还是可能不是已经发送了整个正文,但是为什么我现在已经在代码中了?

仅供参考,我正在发送html文本的一部分,只是想对其进行处理。认为仅从身体读取并自己处理它可能很容易。但是,尽管我对C#并不陌生,但我是Core和ASP上的真正新手,尤其是结合使用。

我现在尝试用ApiController替换cshtml文件:

[Route("api/[controller]")]
[ApiController]
public class SavePageController : ControllerBase
{
    [HttpPost]
    public void SavePage([FromBody] string htmlString)
    {
        // done what was posted is in htmlString argument
    }
}

但随后我收到了400错误请求?我在添加RequestVerificationToken之前就已经知道了,但是正在发送吗?不知道那是怎么回事?

1 个答案:

答案 0 :(得分:0)

要将字符串发送给控制器操作:

.net

[HttpPost]
public void SavePage([FromBody] string htmlString)
{
    // done what was posted is in htmlString argument
}

xhr Java脚本与您的示例完全相同。