C# 如何配置ASP.NET Core以在驼峰情况下返回异常?

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

当我的应用程序引发未处理的异常时,我返回一个状态代码500(内部服务器错误),如下例所示:

[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();
            }
        }
    })