Я пытаюсь настроить фильтр действий, который делает что-то, только если StatusCode
из HttpContext.Response
равно 302.
Я ожидал бы, что смогу сделать это в методе OnActionExecuting
, но StatusCode
всегда 200
.
ActionFilter
код:
public class CustomFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
// do some setup
}
public void OnActionExecuted(ActionExecutedContext context)
{
if (context.HttpContext.Response.StatusCode == StatusCodes.Status302Found)
{
// never get here
}
}
}
Мой Action
метод:
public IActionResult Redirect()
{
return RedirectToAction("Index", "Home");
}
И регистрацияActionFilter
in startup
:
public void ConfigureServices(
IServiceCollection services)
{
services.AddMvc(
options =>
{
options.Filters.Add(new CustomFilter());
});
}
Я проверил в браузере, он правильно возвращает 302 и выполняет перенаправление.Я также пытался использовать интерфейс IAsyncActionFilter
, но у меня возникла та же проблема.
Как применить ActionFilter
к ( only ) перенаправленному ответу?
И почему это не работает, как есть?
РЕДАКТИРОВАТЬ : Ой, у меня их было наоборот.На самом деле, я все еще получаю эту проблему, хотя ...