我有一个页面正在爆炸,我收到了这个错误:
服务器上发生应用程序错误。此应用程序的当前自定义错误设置可防止远程查看应用程序错误的详细信息(出于安全原因)。但是,它可以在本地服务器计算机上运行的浏览器中查看。
在这种特殊情况下,我无法远程进入服务器。然而,我可以访问托管页面的wwwroot文件夹。我试图上传的页面在我的测试服务器上工作但是当我把它投入生产时它会抛出错误。我怀疑是由于缺少名称空间。
无论如何都要为这一页启用远程错误或以其他方式捕获异常细节?它在Page_Load()
之前被抛出答案 0 :(得分:2)
如果您可以访问服务器的事件日志,那么这是通常由ASP.NET编写未处理的异常详细信息的地方。
另一种可能性是通过设置:
来远程显示web.config中的临时异常详细信息<customErrors mode="Off" />
这将显示异常堆栈跟踪而不是YSOD,以便您知道问题所在。
另一种可能性是订阅Global.asax中的Appliaction_Error方法并记录抛出的异常。顺便说一下,你应该做的事情。
您也可以结帐ELMAH。
当然,如果你的应用程序在IIS中没有正确配置(例如你的web.config中的错误,虚拟目录中的ASP.NET版本不正确,远程服务器上没有安装.NET Framework,那么这一切都将是徒劳的) ...)。在这种情况下,您可能需要访问服务器。
答案 1 :(得分:0)
启用远程错误是一个非常糟糕的主意。正确的错误处理对于防止无意识information disclosure至关重要,这会为攻击者提供有用的信息。值得一读。
这里有很多指导:http://msdn.microsoft.com/en-us/library/w16865z6.aspx
然而,有一些错误,你不能编码。例如,将ASP.NET 4.0网站加载到未安装.NET Framework 4.0的服务器。您的错误处理将无法正常工作,因为代码将无法运行。如果您怀疑是这种情况,您可能需要与管理员核实,以确保设置了正确的版本,并将IIS配置为使用正确的目标框架运行您的应用程序。
答案 2 :(得分:0)
如果您暂时想要为一个.aspx页面启用远程错误,只需将“Debug = true”添加到页面,如<%@ Page Language="C#" Debug="true" .... %>