在ASP.net Core 2.1中,我想返回一个带有状态码415的Json响应,而不是默认返回415。
为了实现这一目标,我使用了资源过滤器:
在调试过程中,我看到context.Result被成功覆盖了,但Postman只获取到415错误,没有Json响应。
如果我采取以下措施:
在 OnResourceExecuting 中而不是 OnResourceExecuted 中,它按照我希望的方式工作,但问题在于在执行资源之前我无法检查状态码。有任何想法为什么会发生这种情况吗?
为了实现这一目标,我使用了资源过滤器:
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被成功覆盖了,但Postman只获取到415错误,没有Json响应。
如果我采取以下措施:
context.Result = new ContentResult() { StatusCode = 415, Content = JsonConvert.SerializeObject(myResponse), ContentType = "application/json" };
在 OnResourceExecuting 中而不是 OnResourceExecuted 中,它按照我希望的方式工作,但问题在于在执行资源之前我无法检查状态码。有任何想法为什么会发生这种情况吗?
11111111111111111111111AAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDD
的操作中发送一个 415 响应。由于内容长度不匹配,你会收到一个错误。 - itminus