【问题标题】:How to get error details on Azure Web site如何在 Azure 网站上获取错误详细信息
【发布时间】:2012-11-01 20:37:07
【问题描述】:

我是 Azure 的新手。有人知道如何在部署到 Azure 网络的网站上获取详细的错误消息吗?

我在网站上添加了SimpleMembership,现在正在显示注册和登录(帖子)

抱歉,处理您的请求时出错。

我正在连接到我家用计算机上的数据库(连接没有问题)。

LogFiles azure ftp 服务器上的文件夹有一些文件,但我不知道如何使用这些信息。我希望我能在 azure 上获得 YellowScreen...

【问题讨论】:

    标签: asp.net-mvc azure simplemembership


    【解决方案1】:

    你有两个选择:

    首先,您可以在网络配置中关闭自定义错误。这是一种快速而肮脏的方法,但它至少可以为您提供您正在寻找的信息。完成后请务必重新打开自定义错误。 注意:此方法会将您的堆栈跟踪显示给全世界。

    <configuration>
      <system.web>
        <customErrors mode="Off" />
      </system.web>
    </configuration>
    

    其次,您可以远程桌面进入您部署的机器,进入 IIS 管理器,然后浏览到您的站点。一旦你在那里,重现错误,你会得到你正在寻找的黄屏死机。为此,您必须Enable Detailed Errors

    【讨论】:

    • 我会首先列出选项 2,只是为了强调一个事实,即禁用自定义错误并将堆栈跟踪呈现给全世界通常是一个坏主意。远程进入或使用 Azure SDK 工具从 Visual Studio 查看事件日志。
    • 选项 2 只能在虚拟机上使用,对吧?如果您部署为 Azure 网站,您就无法访问 IIS,是吗?
    • 我希望旧门户或新门户中的一个区域向您显示错误(它给您一个计数但不是详细信息)。基本上我正在寻找类似于 EventViewer 的东西
    • 我在我们的 Azure 站点中尝试过这个,它没有启用远程详细消息。您可以使用工具/流式日志来观察日志(在设置中打开它们之后),但它速度慢且不可靠。
    【解决方案2】:

    在 db 中创建一个用于存储错误日志的表,我使用的是 EF 和名为 Logs 的表。

    创建一个类:

    public class MyAppExceptionFilter : IExceptionFilter
        {
            private MyApp.Models.ApplicationDbContext db = new Models.ApplicationDbContext();
    
            public void OnException(ExceptionContext context)
            {
                Exception ex = context.Exception;
                Log log = new Log();
                log.DateTime = DateTime.Now;
                log.LogText = "Exception happened, text:" + ex.Message;
                try
                {
                    log.LogText +="User details:"+context.HttpContext.User.Identity.Name;
                }
                catch
                {
                    log.LogText += "User details:none";
                }
                db.Logs.Add(log);
                db.SaveChanges();
            }
        }
    

    在 App_Start 文件夹的 FilterConfig.cs 中添加:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new HandleErrorAttribute());
                *filters.Add(new MyAppExceptionFilter());*
            }
    

    【讨论】:

    • elmah 免费在这方面做得更好,没有必要重新发明轮子。如果你付钱,那里有一些很棒的解决方案。
    【解决方案3】:

    您还可以通过将控制台日志传送到云外壳来获得相同的诊断信息。 登录到天蓝色。调出控制台...azure CLI。

    az webapp log config --name <app-name> --resource-group
    myResourceGroup --application-logging filesystem --level information
    

    开始流式传输...

    az webapp log tail --name <app-name> --resource-group myResourceGroup
    

    现在只需刷新浏览器即可查看错误。

    Ctrl-C 返回 CLI 将停止流式传输。

    我在这里捡到的:Tutorial: Build an ASP.NET Core and Azure SQL Database app in Azure App Service

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 2012-12-26
      • 2012-06-20
      相关资源
      最近更新 更多