我从 ASP.NET Core 2.2 迁移到 3.0,现在遇到了问题。如果我写这样的代码:
[HttpPost("test")]
public async Task Test(object o) {
HttpContext.Request.EnableBuffering();
var result = await HttpContext.Request.BodyReader.ReadAsync();
var buffer = result.Buffer;
Console.WriteLine(System.Text.Encoding.Default.GetString(buffer.FirstSpan));
HttpContext.Request.BodyReader.AdvanceTo(buffer.End);
}
Run Code Online (Sandbox Code Playgroud)
我将在控制台中收到一条空消息,但如果我删除参数
[HttpPost("test")]
public async Task Test() {
HttpContext.Request.EnableBuffering();
var result = await HttpContext.Request.BodyReader.ReadAsync();
var buffer = result.Buffer;
Console.WriteLine(System.Text.Encoding.Default.GetString(buffer.FirstSpan));
HttpContext.Request.BodyReader.AdvanceTo(buffer.End);
}
Run Code Online (Sandbox Code Playgroud)
, 我收到来自 body 的消息
curl -X POST \ http://localhost:5000/test \ -H 'Content-Type: application/json' \ -d '{ "test":123 }'
我需要能够像这样在测试中的代码中验证我的用户身份
var identity = new GenericIdentity("ausov@fsb.ru", "UserId");
Thread.CurrentPrincipal = new GenericPrincipal(identity, null);
Run Code Online (Sandbox Code Playgroud)
或者像这样
FormsAuthentication.SetAuthCookie(username, rememberMe);
Run Code Online (Sandbox Code Playgroud)
但这些方法不适用于asp net 5.