【问题标题】:500 Internal Server Error in ASP.NET MVCASP.NET MVC 中的 500 内部服务器错误
【发布时间】:2011-03-01 01:58:37
【问题描述】:

我在 ASP.NET MVC 中工作。我正在使用部分视图,但是当我单击特定链接时出现以下错误。

500 内部服务器错误

如何解决这个错误?

【问题讨论】:

  • 在您的浏览器中关闭友好的错误消息,并允许在您的应用程序中调试,然后告诉我们错误,以便我们更好地帮助您。
  • 这里关于让您的服务器返回更详细的错误信息的建议可能会有所帮助:*.com/q/5385714/12484

标签: asp.net-mvc


【解决方案1】:

要检查在 ASP MVC 下导致内部服务器 500 错误的原因,您还可以在调试模式下运行应用并检查属性 AllErrors。
该属性是一个异常类型元素的数组。

为此打开Global.asax.cs (C#) 并在类MvcApplication 的主体中放置方法Application_EndRequest

protected void Application_EndRequest()
{   //here breakpoint
    // under debug mode you can find the exceptions at code: this.Context.AllErrors
}

然后设置断点并检查数组的内容:this.Context.AllErrors

它帮助我解决了引发的异常,并可以选择查看堆栈跟踪。

【讨论】:

  • 很好的答案!我试过检查网络选项卡,但它从来没有给我一个详细的错误。它只是说它无法加载资源。该解决方案指出我的视图模型的构造函数存在问题。谢谢!
  • 如果我将this.Context.AllErrors 设为空怎么办?
  • 我尝试了这个解决方案,但我得到了 this.Context.AllErrors = null... 所以在深入挖掘之后,我发现在我必须形成的模型中,我已经装饰了一个整数属性删除它后使用“[MaxLength(6, ErrorMessage = "Pincode should be valid.")]" 对我来说效果很好。
  • 在哪里可以找到:this.Context.AllErrors?
【解决方案2】:

500 服务器错误意味着脚本抛出了错误,这不是一个断开的链接(也就是 404 错误)。

如果您使用的是 Internet Explorer,请转到 tools > options > advanced 并取消选择 friendly http errors,这将为您提供更全面的错误描述,以便您调试脚本,或联系相关人员进行调试。

【讨论】:

    【解决方案3】:

    我从 Windows 事件查看器(运行>eventvwr.msc>Windows 日志>应用程序)中获得了有关错误的更多详细信息。检查从 w3wp.exe 记录的警告/错误

    在我的情况下,原因是缺少 dll。希望这会有所帮助

    【讨论】:

    • 从 .net core 升级到 .net 5.0 在服务器上抛出 500 个内部错误,经过一天的工作后毫无头绪,页面变为空白,即使在 web.config 中将 customErrors 设置为 true 后也没有详细信息,应用程序中的信息能够找出存在已知问题docs.telerik.com/reporting/knowledge-base/…
    【解决方案4】:

    虽然有点晚了,但 Anti-Forgery 令牌会阻止请求作为安全措施。

    删除 .cshtml 和控制器中的所有防伪标签,为我删除了错误。

    如果您想成功保留这些令牌,请使用此链接:- http://iamdotnetcrazy.blogspot.com/2013/08/how-to-solve-anti-forgery-token-could.html

    【讨论】: