【问题标题】:Error in Custom Error in ASP.NETASP.NET 中的自定义错误中的错误
【发布时间】:2014-08-08 16:11:35
【问题描述】:

我的 ASP.NET MVC 应用程序中有一个自定义错误页面。

我通过在我的 Web.config 中包含以下内容来启用该页面:

<customErrors mode="On" defaultRedirect="Error">
    <error statusCode="404" redirect="Missing" />
</customErrors>

我的错误页面如下: @model HandleErrorInfo

<h1 class="text-danger">Error</h1>
<h3 class="text-danger">
    An @Model.Exception.GetType().Name has occurred
    while processing your request.</h3>
<div>
    @Model.Exception.Message
</div>

这在大多数情况下都有效。但是,当我收到以下异常时:

支持“SiteDatabase”上下文的模型自数据库创建以来发生了变化。考虑使用 Code First 迁移来更新数据库。

这会导致出现一些错误,导致错误页面无法正确显示,然后页面上出现以下文本:

“/”应用程序中的服务器错误。

运行时错误
描述:处理您的请求时发生异常。此外,在执行第一个异常的自定义错误页面时发生了另一个异常。请求已终止。

我该如何调试呢?我已经浏览了模板,似乎没有任何错误...

【问题讨论】:

    标签: c# asp.net razor


    【解决方案1】:

    支持“SiteDatabase”上下文的模型自 数据库已创建。考虑使用 Code First 迁移来更新 数据库。

    这个错误在数据访问层很深。如果您没有多个层,请检查您的 Entity Framework 相关类。

    您的配置是让您的应用程序在发生错误时重定向。但是这个错误甚至在你的应用程序加载到内存之前就发生了,或者它非常严重以至于它会导致整个 .NET 应用程序崩溃。

    您的选择是创建一个静态 HTML 页面作为默认重定向,如此答案所示: https://stackoverflow.com/a/3377463/3918598

    【讨论】:

      【解决方案2】:

      一个错误页面应该有尽可能少的外部依赖。考虑移除对母版页、布局页、css、javascript 和图像的外部依赖。这样做的原因是,当显示错误页面时,您不能对应用程序或服务器的状态做出任何假设。数据库可能已关闭,可能存在随机运行时错误,CDN 可能已关闭等。

      如果可能,尽量让它成为一个静态的、包罗万象的页面,类似于 GitHub 的错误页面:https://github.com/asdfadsfasdfasdfasdfa

      更多信息:https://github.com/styleguide/templates/2.0

      【讨论】:

        【解决方案3】:

        看起来您的错误处理页面正在重定向到控制器,然后控制器将模型传递给 razor 视图。发生的错误表明模型对象,即 HandleErrorInfo 未正确填充,例如异常属性未填充异常。

        我猜您的错误处理控制器可以正确处理剃刀视图级别的错误,但是当它发生在更深层(例如所提供的层)中时,这是一个实体级别的错误,您的 HandleErrorInfo 没有正确填充。

        要进一步检查原因,请上传控制器中的代码?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-04
          • 2016-05-09
          • 2011-01-11
          • 1970-01-01
          • 2010-12-24
          • 2018-12-03
          • 2016-11-26
          • 1970-01-01
          相关资源
          最近更新 更多