c# - 找不到 “Error” View ,仅在生产环境中发生,未在test/dev中发生

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

在我的代码中,我尝试绕过我的代码以尝试处理错误,如果无法处理,则将用户转到错误页面。这在我的本地开发机器上以及当我发布到测试环境时都可以正常工作,但是当我发布到生产机器时,仍然会为用户提供旧的黄色错误屏幕,而不是重定向到我的错误屏幕。

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

当我查看生产中的错误日志时,出现错误:

The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Administration/Error.cshtml ~/Views/Administration/Error.vbhtml ~/Views/Shared/Error.cshtml ~/Views/Shared/Error.vbhtml



但是在VS中找到我的整个解决方案时,没有发现任何代码可以重定向到名为“错误”的 View 。我不确定这里可能出什么问题或如何解决它。我不确定这里有什么代码/信息会对您有所帮助,因此,如果您需要更多详细信息或代码,请发表评论,我会予以张贴。

编辑:
我不应该使用ELMAH来获取错误,并且它正在记录的唯一错误是针对此丢失的 View 。而且我已经查看了在其所指示的路径下运行的代码,唯一带有“错误”一词的是我的catch 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>

Here您可以找到有关它的更多信息。

关于c# - 找不到 “Error” View ,仅在生产环境中发生,未在test/dev中发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42095453/

相关文章:

asp.net - 使用WebApi时,防伪Cookie token 和表单字段 token 不匹配

c# - 设置 View 的文本框(日期时间字段)以显示只读当前日期时间

go - 如何使用 MethodByName 检查实际函数是否存在?

vba - VBA对象变量或带有 block 变量的未设置错误-Web抓取

c# - 如何从单元测试方法访问数据文件?

c# - 如何在本地托管 ASP.NET 应用程序

c# - 如何确定给定的驱动器盘符是本地驱动器、映射驱动器还是 USB 驱动器?

c# - 故意编写易受命令注入(inject)攻击的页面

c# - 如何使用 asp.net mvc 编辑多选列表?

ruby-on-rails - 在主页上创建自定义 Rails 错误部分