为什么我会根据表达式顺序获得不同的状态代码?

Why do I get different status code depending on expressions order?

我正在使用 ASP.NET Core 3。这是我端点的简单代码:

await context.Response.WriteAsync("Not Found");
context.Response.StatusCode = StatusCodes.Status404NotFound;

我希望得到 400 状态码,但我得到了 200。但是,如果我更改代码字符串顺序:

context.Response.StatusCode = StatusCodes.Status404NotFound;
await context.Response.WriteAsync("Not Found");

然后我得到 404 状态代码。为什么状态码值取决于表达式的顺序?

WriteAsync 方法实际上发出了响应,因此在第一个示例中,您使用默认状态代码(即 200)发送响应,然后修改响应变量的状态代码,即然后不再使用