【问题标题】:Error 500 from MVC WebAPI from remote server来自远程服务器的 MVC WebAPI 的错误 500
【发布时间】:2020-01-02 08:00:43
【问题描述】:

当我尝试使用新的 Windows Server 2016 连接到远程服务器上的 WebAPI 时,似乎从服务器收到错误 500。 我在这里束手无策。可能是什么原因?其他服务器上的 WebAPI 工作正常。

?response
{StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Pragma: no-cache
  Cache-Control: no-cache
  Date: Thu, 02 Jan 2020 07:43:05 GMT
  Server: Microsoft-IIS/10.0
  X-Powered-By: ASP.NET
  Content-Length: 36
  Content-Type: application/json; charset=utf-8
  Expires: -1
}}
    Content: {System.Net.Http.StreamContent}
    Headers: {Pragma: no-cache
Cache-Control: no-cache
Date: Thu, 02 Jan 2020 07:43:05 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
}
    IsSuccessStatusCode: false
    ReasonPhrase: "Internal Server Error"
    RequestMessage: {Method: POST, RequestUri: 'http://url/appname/api/api/Login', Version: 1.1, Content: System.Net.Http.ObjectContent`1[[appname.BO.AdUserBO, appname.BO, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], Headers:
{
  Content-Type: application/json; charset=utf-8
  Content-Length: 199
}}
    StatusCode: InternalServerError
    Version: {1.1}

【问题讨论】:

  • 事件查看器中有什么东西吗?这里没有错误描述。 :(

标签: c# asp.net-mvc asp.net-web-api


【解决方案1】:

这里没有什么信息可以让我们继续下去。所以让我们从基础开始

The error 500 at MDN

超文本传输​​协议 (HTTP) 500 Internal Server Error 服务器错误响应代码表明服务器遇到了阻止其完成请求的意外情况。

这个错误响应是一个通用的“catch-all”响应。通常,这表明服务器找不到更好的 5xx 错误代码来响应。有时,服务器管理员会记录错误响应,例如 500 状态代码以及有关请求的更多详细信息,以防止将来再次发生错误。

这意味着出现了意想不到的错误。现在在 WebAPI 中,这可能是许多事情之一:

  1. 格式错误的web.config。易于验证
  2. 未捕获的异常。这可以在您的过滤器、控制器或应用初始化中的任何位置
  3. 导致 2 的原因,例如连接不到位、访问某些 api 或缺少数据库等。

识别问题的方法

使用事件查看器

您的事件查看器中通常会出现错误 500。

使用IncludeErrorDetailPolicy

Application_Start - Global.asax 文件中

var config = GlobalConfiguration.Configuration;
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

创建自定义Exception logic

如果您想添加更多信息、部分隐藏堆栈跟踪或创建自己的配置,有一些方法可以从 WebApi 2 中完成

异常记录器是查看 Web API 捕获的所有未处理异常的解决方案。

异常处理程序是自定义对 Web API 捕获的未处理异常的所有可能响应的解决方案。

异常过滤器是处理与特定操作或控制器相关的子集未处理异常的最简单的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多