C# Try catch在Azure服务器中不起作用
在我的应用程序配置中,我删除了customErrors,以测试一个难以复制的错误 在错误发生的地方,我尝试: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
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