【问题标题】:ASP.NET IIS Application 500 Internal Server ErrorASP.NET IIS 应用程序 500 内部服务器错误
【发布时间】:2019-12-12 10:01:36
【问题描述】:

我有一个非常奇怪的问题。 我有一个开发环境,我开发了一个 ASP.NET MVC 应用程序,在这个环境中一切正常。特别是在应用程序中,有一个 AJAX 调用,它调用控制器并传递数据,控制器只需要使用传递的信息更新数据库。一切正常!

但是,我将所有设置都设置为开发环境(数据库,连接字符串所有这些),然后跳到服务器上。一切正常,登录功能以及其他数据库保存功能和控制器操作似乎工作正常。除了返回 500 内部服务器错误的 ONE 控制器。

我四处打听,每个人都想看日志。 在事件查看器中,没有与此 500 内部服务器错误相关的日志。 然而,IIS 日志确实提供了一些信息,但该信息并未详细说明导致 500 内部服务器错误的原因。

我知道什么是 500 内部服务器错误,并且我知道它是针对各种问题的一般错误,但是在查看日志后,我无法弄清楚为什么这个特定的控制器操作在运行时会给出 500 错误生产服务器,但在开发环境中执行此操作时没有问题 - 非常奇怪。

浏览器控制台

IIS 正常日志

IIS 在 500 上的请求跟踪失败

【问题讨论】:

  • 你能在调试时尝试连接到生产数据库吗?可能是数据有问题
  • 你到底是什么意思?使用 Visual Studio 调试连接到生产服务器上的数据库?
  • 没错。从 Visual Studio 调试时连接到数据库
  • 你这个人@A.Roussos。我仍然没有解决问题,但是我得到了一些我觉得可以用来解决问题的信息。我只是没想到要在生产服务器上安装和使用 Visual Studio 进行调试——该死的。无论如何,谢谢。

标签: c# asp.net iis


【解决方案1】:

两周前我遇到了类似的问题,并且在 stackoverflow [asp.net web api: only during sql connection - HTTP 500 Error occurs : Local host is currently unable to handle request.

经过数小时的调查后,发现它是数据库中缺少的存储过程。

不确定它是否会帮助您解决问题,但希望它可以为您解决问题提供一些线索。

【讨论】:

  • 感谢您回答@Rashmi Milan。但是我不相信这是一个存储过程或类似的问题,因为我正在使用 EF(以及它在 DB 上执行 CRUD 操作的能力)。以及在开发环境中工作而不是在生产环境中工作的控制器操作。跨度>
【解决方案2】:

按照@A.Roussos 的建议,在 PRODUCTION SERVER 上使用 Visual Studio 调试(对我来说似乎很明显,它不会哈哈),我得到了一些信息。

我的问题是,在我将数据保存到数据库之前,我使用 parse 函数解析一个字符串以加倍。 示例

double a = Double.Parse(mystring);

然而,问题显然是解析功能依赖于您的区域设置(CultureInfo)。 所以我只是在代码中添加了以下信息

double a = Double.Parse(mystring,System.Globalization.CultureInfo.InvariantCulture);

需要注意的是,当我收到 500 内部服务器错误时,我的应用程序没有崩溃,我不知道是什么原因导致它。使用 Visual Studio 后,我获得了足够的信息来使用和谷歌和弄清楚这件事。

让我丧命的是应用程序(或应用程序中的一个特定控制器操作)在开发环境中完美运行,但在生产环境中却无法正常运行,这样的事情从未发生在我身上,我很高兴我学到了这一点经验。

【讨论】:

  • 500.0 是典型的未处理异常,如果您进一步了解,这很常见,并且可以更容易地使用各种工具进行记录和分析。大家一定要记住,不同的环境确实是不一样的,你可能会在blog.lextudio.com/…中找到一些提示
  • 你好@LexLi。我读了你的博客,我不得不说这是一篇非常有趣的文章,我认为这对让你有一个更好的心态来处理和理解这些类型的问题非常有帮助(关于 Visual Studio 和 IIS 之间的差异)。
【解决方案3】:

你能确定你点击的 URL 中没有空格吗?

【讨论】:

  • 嘿@Rafaqat Ali,谢谢你的回答。我确实仔细检查了我的 URL 是否存在诸如此类的问题,但没有运气。对这个有同样的想法:)
【解决方案4】:

将 web.Config 设置为自定义错误模式为关闭。您应该能够看到完整的错误以及与这些相关的任何其他详细信息。 很多时候,环境中缺少导致这些错误的方面。

似乎错误是由在控制器的操作方法中调用的私有方法生成的,但错误本身被吃掉(空捕获)或只是抛出,导致应用程序失败。检查异常处理程序是否存在并以某种方式记录详细信息。

【讨论】:

  • 只是在这里添加评论。当我用谷歌搜索这个问题时,他们都有相同类型的答案:从 Windows、IIS 获取日志,在 web.config 中将 CustomErros 设置为 OFF,在 IE 中未选中“显示友好HTTP 请求”等....然而,这并没有提供任何有用的信息,因为我的应用程序没有崩溃或给出任何指示控制器操作正在给出异常的指示。当我看到我在数据库中的值没有按预期改变时,我发现控制器操作无法正常工作。此外,浏览器控制台是 500 内部服务器错误的唯一指示。
猜你喜欢
  • 2012-10-27
  • 1970-01-01
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多