0

我一直在开发一个应用程序,有时在我的编码过程中我收到 500 Internal Server Error 没有内容,这并不是它应该显示的内容。我编写了一个代码来测试控制器中的错误响应,如下所示:

    [HttpGet]
    [Route("TryCatch")]
    public IHttpActionResult TestCatch()
    {
        try
        {
            object obj = null;
            int i = (int) obj;
            return Ok();
        }
        catch (Exception e)
        {
            return InternalServerError(e);
        }
    }

当我在本地尝试此操作时,我确实收到了有关我希望的错误的信息。至于在生产中,我所看到的只是(在邮递员中){“消息”:“发生错误。” } 和状态码。

我环顾四周,发现了我认为可以解决我的问题的方法:内部服务器错误 - Azure 应用服务自定义控制器,但事实并非如此。

在 web.config 中添加<httpErrors errorMode="Custom" defaultResponseMode="passThrough"><customErrors mode="On"/>或任何内容也无济于事。

任何帮助表示赞赏!

4

1 回答 1

1

请将自定义错误模式更改为关闭而不是打开。

<customErrors mode="Off"/>

并将 WebApiConfig.cs 文件(Azure 移动服务)或 Startup.cs 文件(Azure 移动应用程序)中的 IncludeErrorDetailPolicy 属性更改为 Always。

config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

之后,我可以从 exceptionMessage 属性中获取详细的异常消息。

{"message":"An error has occurred.","exceptionMessage":"Object reference not set to an instance of an object.","exceptionType":"System.NullReferenceException","stackTrace":""}
于 2017-05-08T06:16:58.530 回答