C# Try catch在Azure服务器中不起作用

C# Try catch在Azure服务器中不起作用,c#,entity-framework,azure,asp.net-mvc-5,try-catch,C#,Entity Framework,Azure,Asp.net Mvc 5,Try Catch,在我的应用程序配置中,我删除了customErrors,以测试一个难以复制的错误 在错误发生的地方,我尝试: if (ModelState.IsValid) { db.TarefaHoras.Add(tarefaHora); try { db.SaveChanges(); } catch (DbUpdateException e

在我的应用程序配置中,我删除了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仍然会带来默认的错误视图


有人知道会发生什么吗?

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

但是,您要做的是创建一个错误条目,并使用仍然处于错误状态的相同
db
上下文进行添加。因此对
db.SaveChanges()的调用仍将生成异常,但这次它不会被捕获


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

因此调用
db.SaveChanges()生成异常。这意味着上下文
db
无效,应该解析或丢弃它

但是,您要做的是创建一个错误条目,并使用仍然处于错误状态的相同
db
上下文进行添加。因此对
db.SaveChanges()的调用仍将生成异常,但这次它不会被捕获


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

在调试中生成和发布,如果希望获得与Visual Studio中相同的错误处理经验,则不发布。您如何建议我在调试中发布错误,但我收到了一个非常一般的错误[NullReferenceException:对象引用未设置为对象的实例。]不再显示任何内容。有什么想法吗?添加断点并逐步执行。您可以远程执行-(远程调试部分)。堆栈跟踪应该已经为您提供了足够的上下文,以便您了解问题的症结所在。如果您希望拥有与Visual Studio中相同的错误处理经验,请在调试中生成和发布,而不是发布。您如何建议我在调试中发布,但我收到了一个非常常见的错误[NullReferenceException:对象引用未设置为对象的实例。]不再显示任何内容。有什么想法吗?添加断点并逐步执行。您可以远程执行-(远程调试部分)。堆栈跟踪应该已经为您提供了足够的上下文,以了解发生故障的位置。谢谢,我将尝试分离所有db.savechanges谢谢,我将尝试分离所有db.savechanges