C# 如何配置ASP.NET Core以在驼峰情况下返回异常?
当我的应用程序引发未处理的异常时,我返回一个状态代码500(内部服务器错误),如下例所示:C# 如何配置ASP.NET Core以在驼峰情况下返回异常?,c#,asp.net-core,C#,Asp.net Core,当我的应用程序引发未处理的异常时,我返回一个状态代码500(内部服务器错误),如下例所示: [HttpGet] public ActionResult<string> Get() { try { throw new Exception("Exception return test."); } catch (Exception ex) { return StatusCode(StatusCode
[HttpGet]
public ActionResult<string> Get()
{
try
{
throw new Exception("Exception return test.");
}
catch (Exception ex)
{
return StatusCode(StatusCodes.Status500InternalServerError, ex);
}
}
但我希望所有属性都以驼峰格式格式化
在ASP.NET Web API中,您可以实现一个IContentNegotiator
接口,并在HttpConfiguration
中替换它,如。通过这种配置,API的每个输出都是驼峰式的,包括异常消息
在ASP.NET Core 2.2中,即使API返回的对象属性在默认情况下是驼峰式的,但例外情况并非如此
我试过(在Startup.cs中):
但是没有运气。我还检查了OutputFormatter
,并确认JsonOutputFormatter
已将CamelCasePropertyNamesContractResolver
作为其合同解析程序。我还是试过了,但正如预期的那样,结果没有变化:
services.AddMvc()
.AddMvcOptions(options =>
{
foreach (var item in options.OutputFormatters)
{
if (item is JsonOutputFormatter a)
{
// This was pointless
a.PublicSerializerSettings.ContractResolver
= new CamelCasePropertyNamesContractResolver();
}
}
})
至少有一些JSON属性直接对应于
异常的属性。如果打算将其映射到一个异常
,则破坏该案例将是有损失的。您是否考虑过使用自己的中间件进行异常处理?您使用的是什么json序列化程序?@PavelAnikhouski听起来很有趣,但由于我是从.net core开始的,我不知道如何使用中间件来更改生成的JSON的大小写。@Inasane_developer默认的,我没有更改它。
services.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver =
new CamelCasePropertyNamesContractResolver();
options.UseCamelCasing(true);
})
services.AddMvc()
.AddMvcOptions(options =>
{
foreach (var item in options.OutputFormatters)
{
if (item is JsonOutputFormatter a)
{
// This was pointless
a.PublicSerializerSettings.ContractResolver
= new CamelCasePropertyNamesContractResolver();
}
}
})