我的“web.config”中有以下配置:
<customErrors mode="Off">
</customErrors>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
如果我的环境中出现错误,请清楚地显示错误,但当我将其上传到Windows时,azure会显示屏幕,告诉我我必须放置:
<customErrors mode="Off" />
或
<customErrors mode="RemoteOnly" redirectMode="~/file.html" />
并没有显示错误。是否有一些额外的设置我必须在“ASP.NET MVC 5”中的“web.config”中显示错误?
答案 0 :(得分:0)
发布到Azure的默认设置是使用发布配置。释放配置,除其他外,禁用您在开发中看到的黄色死亡屏幕,因为这是1)如果被错误的人(恶意)看到有潜在危险的信息和2)对于临时用户不是用户友好的
如果您想查看错误,请按照该页面上的建议操作。如果你的问题是已经做了那个,并且错误仍然没有显示,那么@Zabavsky可能是正确的;您没有将其添加到部署它的配置中(很可能是Release)。
但是,我会提醒你实际上这样做。就像我之前说的那样,错误显示的堆栈跟踪可能包含恶意用户可能用来破坏您网站的敏感信息,如果您在发布版中打开它,即使只是一段时间进行调试,也会出现这种情况。你有可能忘记把它关掉。理想的是解决开发中的所有错误。对于部署到Azure时的最终验证,您可以使用Debug配置(将显示错误)部署到站点的暂存版本。然后,一旦一切都很好,您可以使用Release配置进行最终部署。
如果您希望持续从生产中的错误中获取堆栈跟踪,最好的办法是使用ELMAH之类的工具,它会记录发生的异常并以受保护的方式呈现给您。默认情况下,这将仅通过localhost,这将要求您从运行该站点的服务器内进行浏览。如果您不能这样做,因为您只使用Azure网站而不是虚拟机,那么您还可以启用对某个用户角色的访问权限,或仅通过某个IP(您的静态IP)。