- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在向 Controller 发送 AES 加密请求正文,以下是一个示例:
(using crypto-js)
{body: "U2FsdGVk186Jj7LySqT966qTdpQZwiR+wR0GjYqBzR4ouFAqP8Dz8UPPTv"}
{Name: "admin123" }
StreamReader
但它返回一个空字符串
public void OnActionExecuting(ActionExecutingContext context)
{
var req = context.HttpContext.Request;
using (StreamReader reader = new StreamReader(req.Body, Encoding.UTF8, true, 1024, true))
{
bodyStr = reader.ReadToEnd();
}
req.Body.Position = 0;
}
[HttpPost("[action]")]
public async Task<string> MyControllerName(InfoReq info)
{
}
public class InfoReq
{
public string Name{ get; set; }
}
最佳答案
在这里,您需要采用中间件方法。阅读文档 Middleware
如果你想读取流,你必须 request.EnableRewind().because Request. body
是不支持第二次读取流的只读和仅转发流。
request.EnableRewind();
original stream back on the Response. Body
public void OnActionExecuting(ActionExecutingContext context)
{
var request = context.HttpContext.Request;
try
{
request.EnableRewind();
using (StreamReader reader = new StreamReader(request.Body))
{
return reader.ReadToEnd();
}
}
finally
{
request.Body = request;
}
context.Request.Body.Position = 0
return string.Empty;
}
request.Body.Position = 0 .
否则,您将获得空体异常。
关于c# - 如何在 IActionFilter Asp.net core 中读取 OnActionExecuting(ActionExecutingContext context) 中的请求体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56258219/
我正在构建以下过滤器: public class TestflowFilter : FilterAttribute, IActionFilter { public void OnActionE
请解释 IActionFilter 和 IResultFilter 之间的区别。我知道 OnActionExecuting 发生在 action 方法执行之前, OnActionExecuted 发生
我只是想知道 IActionFilter 和 IAuthorizationFilter 之间是否有任何区别? 我假设我们可以在可能具有 IAuthorizationFilter 的 IActionFi
我有一个 IActionFilter在 OnActionExecuted 中做了一些事情,但是我不想在 Controller 结果执行重定向时执行此操作。 我最初的想法是检查 ActionResult
在 ASP.NET Web API 项目中,我有一个操作过滤器,它检查模型状态错误并返回 Bad Request 状态代码(如果有)。它看起来像这样: public class ValidationF
我在 .Net Web API 上有一个应用程序。在执行每个操作后,我想查看结果并更改其中的某些内容。 说我的 API controllerAction 看起来像 public Car Get() {
我正在向 Controller 发送 AES 加密请求正文,以下是一个示例: (using crypto-js) {body: "U2FsdGVk186Jj7LySqT966qTdpQZwiR+wR0
我在 ASP.NET core 2.0 中有过滤器属性,请参阅下面的代码片段。这里的问题是我总是得到状态代码是 200。 即使实际状态码是 500,我也会得到 200。如何获取实际状态码? publi
我是一名优秀的程序员,十分优秀!