找不到仅在生产中发生的视图"Error"而不是测试/开发



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

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

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

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

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

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

您可能有这样的东西:

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>

在这里你可以找到更多关于它的信息。

相关内容

最新更新