请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

这一小节的代码不是很懂。老师能详细说一下吗

.ConfigureApiBehaviorOptions(setupAction =>
            {
                setupAction.InvalidModelStateResponseFactory = context =>
                {
                    ValidationProblemDetails details = new ValidationProblemDetails(context.ModelState)
                    {
                        Type = "",
                        Title = "数据验证失败",
                        Status = StatusCodes.Status422UnprocessableEntity,
                        Detail = "请看详细说明",
                        Instance = context.HttpContext.Request.Path
                    };
                    details.Extensions.Add("traceId", context.HttpContext.TraceIdentifier);
                    return new UnprocessableEntityObjectResult(details){ ContentTypes = { "application/json" }  };
                };
            });

正在回答 回答被采纳积分+3

3回答

阿莱克斯刘 2020-08-12 06:06:31

前两天,慕课网后台似乎出问题了,一直没办法回答问题。所以回复耽搁了好几天,不好意思。

在asp.net中,http 400级别的错误默认的格式如下:

{
    “错误”:{
    “设备编号”: [
       “ DeviceId字段为必填。”
       ]
    },
  “ title”:“发生一个或多个验证错误。”,
   “状态”:400,
   “ traceId”:“ 80000049-0001-fc00-b63f-84710c7967bb”
}

但是,问题是在实际工作中也许需要修改默认的400级别的格式,这时候就需要通过修改ConfigureApiBehaviorOptions来实现自定义的错误输出格式了。比如说,原本数据验证错误默认的输出是400,但是课程为了取得更准确的错误代码,把数据验证错误(也就是context.ModelState
失败的情况)修改成为输出422的格式。

关于你的问题,因为不是特别清楚你不懂的是哪一段代码,所以我也只是讲了一个大概。希望能对你有帮助。这里有一篇文章讲说不定可能帮你:https://www.cnblogs.com/tenghao510/p/11927930.html

如果可以把问题再精确一下,我可以给出更详细的答案。


0 回复 有任何疑惑可以回复我~
阿莱克斯刘 2020-08-11 16:36:00

在asp.net中,http 400级别的错误默认的格式如下:

{
    “错误”:{
    “设备编号”: [
       “ DeviceId字段为必填。”
       ]
    },
  “ title”:“发生一个或多个验证错误。”,
   “状态”:400,
   “ traceId”:“ 80000049-0001-fc00-b63f-84710c7967bb”
}

但是,问题是在实际工作中也许需要修改默认的400级别的格式,这时候就需要通过修改ConfigureApiBehaviorOptions来实现自定义的错误输出格式了。比如说,原本数据验证错误默认的输出是400,但是课程为了取得更准确的错误代码,把数据验证错误(也就是context.ModelState
失败的情况)修改成为输出422的格式。

关于你的问题,因为不是特别清楚你不懂的是哪一段代码,所以我也只是讲了一个大概。希望能对你有帮助。这里有一篇文章讲说不定可能帮你:https://www.cnblogs.com/tenghao510/p/11927930.html

如果可以把问题再精确一下,我可以给出更详细的答案。



0 回复 有任何疑惑可以回复我~
阿莱克斯刘 2020-08-11 15:06:18

在asp.net中,http 400级别的错误默认的格式如下:

{
    “错误”:{
    “设备编号”: [
       “ DeviceId字段为必填。”
       ]
    },
  “ title”:“发生一个或多个验证错误。”,
   “状态”:400,
   “ traceId”:“ 80000049-0001-fc00-b63f-84710c7967bb”
}

但是,问题是在实际工作中也许需要修改默认的400级别的格式,这时候就需要通过修改ConfigureApiBehaviorOptions来实现自定义的错误输出格式了。比如说,原本数据验证错误默认的输出是400,但是课程为了取得更准确的错误代码,把数据验证错误(也就是context.ModelState
失败的情况)修改成为输出422的格式。

关于你的问题,因为不是特别清楚你不懂的是哪一段代码,所以我也只是讲了一个大概。希望能对你有帮助。这里有一篇文章讲说不定可能帮你:https://www.cnblogs.com/tenghao510/p/11927930.html

如果可以把问题再精确一下,我可以给出更详细的答案。



0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信