【问题标题】:Try catch does not work in Azure server尝试 catch 在 Azure 服务器中不起作用
【发布时间】:2017-08-26 22:06:27
【问题描述】:

在我的应用程序的配置中,我删除了 customErrors 以测试难以复制的错误。

我尝试了应该发生错误的地方:

if (ModelState.IsValid)
        {
            db.TarefaHoras.Add(tarefaHora);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException ex)
            {
                ErroDetalhe erro = new ErroDetalhe();
                erro.Data = tarefaHora.Data;
                erro.UsuarioId = tarefaHora.ApplicationUserId;
                erro.JSON = JsonConvert.SerializeObject(tarefaHora);
                erro.Tipo = "TarefaHora";
                erro.Controller = "TarefaHoras";
                erro.Action = "Create Post";
                erro.Exception = ex.GetType().FullName;

                db.ErroDetalhes.Add(erro);
                db.SaveChanges();

                return RedirectToAction("ErroNaAtualizacaoDaBase", "Erros", new { id = erro.ID });                        
            }

            return RedirectToAction("Index", "Home");
        }

        return View(tarefaHora);
    }

此错误仅在运行时发生并且仅在 Azure 服务器上发生,因此我试图更好地描述错误,为此我创建了一个存放信息的表。

但是……

问题是我得到的视图错误不是我创建的视图“ErrorInputUpdate”,它在 Catch 中被重定向。

我正在获取默认的 AspNET 错误视图。

所以我进入共享视图并删除了默认页面并从 web.config 中删除了 customErrors。

即便如此,Azure 仍然会带来默认的错误视图。

有人知道会发生什么吗?

【问题讨论】:

  • Debug 中构建和发布,如果您想拥有与 Visual Studio 中相同的错误处理体验,则不要在 Release 中。
  • 你是如何推荐我在 Debug 中发布的,但我收到了一个非常通用的错误 [NullReferenceException: 对象引用未设置为对象的实例。] 没有显示更多内容。有什么想法吗?
  • 添加断点并单步执行。您可以远程进行 - docs.microsoft.com/en-us/azure/app-service-web/…(远程调试部分)。堆栈跟踪应该已经为您提供了足够的上下文来了解发生了什么问题。

标签: c# entity-framework azure asp.net-mvc-5 try-catch


【解决方案1】:

所以调用db.SaveChanges(); 会产生异常。这意味着上下文db 无效,应该解决或丢弃它。

但是,您正在做的是创建一个错误条目并使用仍处于故障状态的相同 db 上下文添加。所以在你的 catch 块中调用db.SaveChanges(); 仍然会产生一个异常,但是这次它不会被捕获。

解决方案是将错误写入数据库以外的其他内容,例如文件或其他内容,或者使用另一个 EF 上下文实例。其他选项是在再次调用db.SaveChanges(); 之前删除或更正无效条目,或者不将错误存储在数据库中但在重定向视图中包含所有详细信息。

【讨论】:

  • 谢谢,我会尝试分离所有 db.savechanges
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-04
  • 1970-01-01
相关资源
最近更新 更多