找不到"错误"视图只发生在生产中而不是测试/ dev

时间:2017-02-07 16:47:11

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

在我的代码中,我试着抓住我的代码来尝试处理错误并将用户传递到错误页面,如果我无法处理它们的话。这在我的本地开发机器上工作正常,当我发布到我们的测试环境时,但是一旦我发布到生产机器,用户仍然被给予旧的黄色错误屏幕,而不是被重定向到我的错误屏幕。

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

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

  

视图&#39;错误&#39;或者找不到它的主人,或者没有视图引擎支持搜索到的位置。搜索了以下位置:〜/ Views / Administration / Error.cshtml~ / Views / Administration / Error.vbhtml~ / Views / Shared / Error.cshtml~ / Views / Shared / Error.vbhtml

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

编辑: 我不应该因为我使用ELMAH来获取错误而且它记录的唯一错误就是这个缺失的视图。我已经查看了在它指示的路径下运行的代码,并且唯一具有单词&#34; Error&#34;在我的捕获return RedirectToRoute("Error Page");

中的这一行

1 个答案:

答案 0 :(得分:0)

你可能有这样的事情:

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您可以找到有关它的更多信息。