У меня есть базовый класс, в который я хочу включить код, который выполняется во все мои методы контроллера. В моем особом случае я решил создать базовый класс, перезаписать OnActionExecution
и заставить мои классы контроллера наследоваться от этого базового класса. Это работает довольно хорошо:
public class BaseController : Controller
{
public override void OnActionExecuting(ActionExecutingContext context)
{
string parsedParameters = string.Empty;
if (context.ActionArguments.Count > 0)
{
inputParameters = JsonConvert.SerializeObject(context.ActionArguments.First().Value,
Formatting.None,
new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
});
}
// ...
base.OnActionExecuting(context);
}
}
Этот код берет модели отображенного представления из метода контроллера и преобразует его в JSON (для целей регистрации)
Пример методов контроллера:
public async Task<IActionResult> Create([FromBody]CreateGroupRequest requestModel)
Проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что дополнительные json значения, которые были переданы в конечную точку, не включаются, поскольку они не будут отображаться (поскольку такие целевые свойства не существуют в модели представления)
Я хочу получить доступ к необработанному телу объекта Request
. Исходя из того, что я прочитал, трудно получить доступ к потоку тела запроса, если он уже был прочитан один раз. Я нашел несколько решений о том, как читать поток тела запроса, но они, кажется, работают только для. NET Framework, а не. NET Core.
Вопрос : Как я могу получить полное тело запроса (включая исходное JSON, отправленное на контроллер) из ActionExecutinContext
в ASP. NET Core?