Azure App Service上.net Core的神秘异常

时间:2018-10-30 16:17:54

标签: azure asp.net-core websocket azure-web-app-service

在过去的一年中,我有一个通过连接的Azure SQL数据库托管在应用程序服务上的应用程序。就在过去的一周中,我们在处理响应时遇到了许多问题,这表明我们的异步代码有些脆弱。没有部署相关的新代码。我怀疑这涉及到我们应用程序的一部分,可能是数据库,直到请求处理之前才被分配。

我们的堆栈涉及在Kestrel上使用ASP.Net Core 2.0应用程序,将用户导航到Razor Page,然后实例化用于(本质上)游戏的websocket连接。这是一个整体。这全都在于部署到一个实例的一个项目中。

最近的问题涉及此错误:

System.NullReferenceException: Object reference not set to an instance of an object.
  at Microsoft.AspNetCore.Routing.Tree.TreeRouter.<RouteAsync>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at Microsoft.AspNetCore.Routing.RouteCollection.<RouteAsync>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at Microsoft.AspNetCore.Builder.RouterMiddleware.<Invoke>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.<Invoke>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>d__6.MoveNext()

我们的App服务最终出现在重启循环中,此异常是唯一的错误,重复出现。以前在日志中,在200毫秒内处理的请求数量不合理,这使我认为这些请求实际上是同时被保留和处理的。否则,时代就没有意义了。

在此期间,该应用程序无法使用,直到我手动重新启动应用程序服务为止,此后没有任何问题。事实证明,该错误很难重现。

对这些问题有任何见解,以及如何使应用程序服务及其数据库始终保持打开状态,或者该错误可能与什么有关?

0 个答案:

没有答案