我已经启动并运行了一个Azure应用程序,但各种请求都会产生500个错误。服务器上没有其他详细信息可以让我确切地知道问题所在。没有堆栈跟踪,没有错误消息。我从服务器上得到的唯一信息是http头,指示我有一个错误。
我四处查找了一下,但似乎找不到检索错误详细信息的方法。我看到一些文章建议我启用日志记录,但我不确定1)如何做到这一点,2)这些日志文件将放在哪里,3)如何访问所述日志文件。我看到过一些帖子说要向我的应用程序添加一大堆代码以启用日志记录,但我所要寻找的只是一条错误消息和一个500错误的堆栈跟踪。我真的必须在我的应用程序中添加一堆代码才能看到这些信息吗?如果没有,我该怎么做?
谢谢
Chris
最好的长期解决方案是启用Azure Diagnostics,我认为这就是你所指的。如果你想要一个快速而肮脏的解决方案,你可以将错误记录到一个文件中,然后RDP到角色实例中查看它们。这与您在自己的数据中心的服务器上所做的非常相似。
您可以随心所欲地创建日志。我已经成功地使用了log4net和RollingFileAppenders。将日志文件路径设置为类似"\logs\mylog.txt"的路径会将日志放置在虚拟机的E:驱动器中。请注意,您仍然需要应用程序中的某个位置的代码来捕获错误并将其写入日志——通常,global.asax中的全局错误处理程序是一个很好的位置。
您还必须启用对角色实例的RDP访问。有许多文章详细介绍了如何做到这一点。这是一个。
这不是通常建议的方法,因为当角色回收或重新创建时,日志可能会消失。登录以监视所有这些不同的服务器也是一件令人头疼的事。
另一个警告-500错误可能是由于web.config中的某些故障造成的。如果是这样的话,世界上所有的应用程序级错误日志都不会对你有帮助。因此,请确保您的web.config是有效的,并在RDP进入服务器时检查Windows事件日志。
500内部服务器错误通常是由服务器上的一些问题引起的,当服务器无法理解传入请求或配置中存在一些问题时。所以,试着在本地运行应用程序,看看是否有问题。您可以在catches/application_error中记录数据库中的错误,也可以使用跟踪。相信我,它们非常有用,值得多写几行代码。
为了追踪,请看这里,http://msdn.microsoft.com/en-us/magazine/ff714589.aspx