C# 如何从剃须刀页面上阅读尸体?这个过程一直悬而未决

C# 如何从剃须刀页面上阅读尸体?这个过程一直悬而未决,c#,asp.net-core-2.1,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文件中,我尝试以多种不同的方式

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

xhr = new XMLHttpRequest();
xhr.addEventListener('readystatechange', onStateChange);
xhr.open('POST', 'SavePage');
xhr.setRequestHeader('RequestVerificationToken', token);
xhr.send(payload);
然后在我的SavePage.cshtml文件中,我尝试以多种不同的方式直接从正文中读取,我得到了内容长度,并且知道我的数据是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--

但是我收到了400个错误的请求?我在添加RequestVerificationToken之前就得到了,但那是正在发送的吗?不知道怎么了

要向控制器发送sting操作:

.net


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

为什么要尝试直接访问HttpContext和请求正文?为什么不创建一个适当的操作来接受其参数中的数据?剩下的代码是什么样子的?大部分都是html和c#中的一些小部分。所以大部分代码都是带有部分视图的纯html,对于db内容,我只有一个地方可以直接读取cshtml文件中的内容,然后是不起作用的保存部分。不确定如何设置操作。那我不需要送一件合适的东西吗?我只是从javascript部分收到了这些数据,而我自己并没有编写这些数据。您想发送什么?纯html到服务器,一个来自序列化表单的对象?纯html,js变量负载将包含我只想获取和保存的html代码。但我现在甚至不能访问它。显然,我需要学习更多关于core和Asp.Net的知识,但我认为这个简单的项目可以帮助我开始,但后来我陷入了这个简单的问题。。js代码与其他项目共享,我不想在那里更改任何内容。很抱歉,我发现了问题。这是在js代码中,当使用“token”调用set头时。复制粘贴错误,此方法中未设置令牌,然后kestrel不信任验证并发送400。非常糟糕的错误消息,但我的错误。我将尝试以你向我展示的正确方式工作,并将接受这一答案,因为这可能是正确的方式。再次感谢!谢谢你的帮助。不知道我是否理解正确?我修改了这个问题,删除了我的cshtml文件,在我的项目中添加了一个ApiController,插入了你的代码,并添加了一个断点,但它从未被调用。我收到了400个错误的请求?如上所述,当我忘记添加RequestVerificationToken时,我得到了这个结果。但这是被发送的吗?我猜我遗漏了一些琐碎的东西…检查从开始到行动的正确路线,并在调用时使用它,它应该是这样的:xhr.open('POST',')开始觉得这里有点愚蠢。。。我很确定我去的地方是对的,如果我改变了网址,上面写着404(未找到),那么我想我会去正确的地方。我的项目是一个Asp.NETCore2.1RazorPages,我刚刚在项目中添加了一个Api控制器,我还需要做些什么。我将尝试制作一个简单的示例,并使用您的代码,看看这是否有效,也许我在设置中做了一些错误。尝试从邮递员到控制器操作上发布html,看看是否有效。我以前尝试过,但仍然不走运。我做了一个简单的样本,如果你(或其他任何人)有一分钟的时间来看看我错在哪里。我做了一个新项目(ASP.NET核心Web应用程序),并用一个简单的按钮清除了索引页,只需将一些数据发布到我添加的控制器上。我仍然收到400个错误的请求。
[Route("api/[controller]")]
[ApiController]
public class SavePageController : ControllerBase
{
    [HttpPost]
    public void SavePage([FromBody] string htmlString)
    {
        // done what was posted is in htmlString argument
    }
}
[HttpPost]
public void SavePage([FromBody] string htmlString)
{
    // done what was posted is in htmlString argument
}