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