В ASP.net Core 2.1 я хочу вернуть ответ Json вместе с кодом состояния 415 вместо 415, возвращенного по умолчанию.
Для этого я использую фильтр ресурсов:
public class MediaTypeResouceFilter : Attribute, IResourceFilter
{
public void OnResourceExecuting(ResourceExecutingContext context)
{
}
public void OnResourceExecuted(ResourceExecutedContext context)
{
if (context.HttpContext.Response.StatusCode == 415)
{
context.Result = new ContentResult() { StatusCode = 415, Content = JsonConvert.SerializeObject(myResponse), ContentType = "application/json" };
}
}
}
В отладке я вижу, что context.Result успешно переопределяется, но почтальон получает только 415 без ответа Json.
Если я поставлю:
context.Result = new ContentResult() { StatusCode = 415, Content = JsonConvert.SerializeObject(myResponse), ContentType = "application/json" };
внутри OnResourceExecuting вместо OnResourceExecuted, он работает, как я хочу, но дело в том, что я не могу проверить код состояния перед выполнением ресурса.
Есть идеи, почему это происходит?