【问题标题】:Can not find "Error" view only happening in production and not test/dev找不到“错误”视图仅发生在生产中而不是测试/开发中
【发布时间】:2017-06-25 00:40:18
【问题描述】:

在我的代码中,我在我的代码周围放置了 try catch 来尝试处理错误,如果我无法处理它们,则将用户转到错误页面。这在我的本地开发机器上运行良好,当我发布到我们的测试环境时,但一旦我发布到生产机器,用户仍然会看到旧的黄色错误屏幕,而不是被重定向到我的错误屏幕。

我查看了两种环境的 web.config 文件,唯一的区别是生产有 <compilation targetFramework="4.6.1" /> 和测试有 <compilation debug="true" targetFramework="4.6.1" />

当我查看生产中的错误日志时,我得到了错误:

未找到视图“错误”或其主视图,或者没有视图引擎支持搜索到的位置。搜索了以下位置:~/Views/Administration/Error.cshtml ~/Views/Administration/Error.vbhtml ~/Views/Shared/Error.cshtml ~/Views/Shared/Error.vbhtml

但是在 VS 中查找我的整个解决方案时没有显示重定向到名为“错误”的视图的代码。我不确定这里可能有什么问题或如何修复它。我不确定这里有哪些代码/信息可能会有所帮助,所以如果您需要更多详细信息或代码,请发表评论,我会发布。

编辑: 我不应该说我正在使用 ELMAH 来获取错误,它记录的唯一错误是这个缺失的视图。而且我查看了在它指示的路径下运行的代码,其中唯一包含“错误”一词的是我的捕获 return RedirectToRoute("Error Page");

中的这一行

【问题讨论】:

    标签: c# asp.net-mvc error-handling asp.net-mvc-5


    【解决方案1】:

    你可能有这样的事情:

    public class AdministrationController : Controller
    {
        public ActionResult Error()
        {
            return View();
        }
    }
    

    "Error Page" 被重定向到它。但是您缺少与之相关的.cshtml 文件。

    我没有足够的信息来找出为什么这只发生在生产环境中。

    我建议你不要在 try{}catch 闭包中重定向,而是在配置中这样做:

    <configuration>
        <system.web>
            <customErrors mode="RemoteOnly" defaultRedirect="~/ErrorPages/Oops.aspx" />
        </system.web>
    </configuration>
    

    Here你可以找到更多关于它的信息。

    【讨论】:

    • 我没有名为错误的操作,也没有重定向到名为“错误”的操作的代码。我有一个名为“ErrorPage”的操作,其路由名称为“Error Page”,所有内容都重定向到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    相关资源
    最近更新 更多