LIv*_*nov 5 c# azure azure-web-app-service asp.net-core
我最近将我的 Linux 应用服务从 ASP.NET Core MVC 2.2 更新到 3.1,因为我的应用程序无法再访问位于 VM 中的 SQL Server 数据库,也位于 Azure 中。
#Findings 我在 Linux 应用服务中部署了一个空的 ASP.NET Core MVC 3.1 应用程序,它有 2 个视图 - 一个视图来自控制器的静态数据 ( return "Hello world!") 和一个连接到数据库的结果。
该应用程序在我的机器上运行良好,但在 Azure 中,只有“静态”视图工作正常。当我尝试通过数据库访问获取视图时,经过漫长的等待时间(~ 4 分钟)后,我收到错误 502
502 - Web 服务器在充当网关或代理服务器时收到无效响应。您要查找的页面有问题,无法显示。当 Web 服务器(作为网关或代理)联系上游内容服务器时,它收到来自内容服务器的无效响应。
当我查看应用计划时,我看到 CPU 已达到 90+%。
我进入 Azure 并检查了日志,发现:
2020-03-18T22:19:31.461251550Z 执行请求时发生未处理的异常。
2020-03-18T22:19:31.467998655Z System.InvalidOperationException:超时已过期。在从池中获取连接之前超时时间已过。这可能是因为所有池连接都在使用中并且达到了最大池大小。
2020-03-18T22:19:31.468013855Z 在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection,TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) 2020-03-18T22:19:31.468019355Z at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 重试,DbConnectionOptions userOptions)
2020-03-18T22: 180Z.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection,TaskCompletionSource 1 重试,DbConnectionOptions userOptions) 2020-03-18T22:180ZProviderBase.DbConnectionFactory.TryGetConnection。 TryOpenConnection(DbConnection 外连接,DbConnectionFactory connectionFactory,TaskCompletionSource1 retry, DbConnectionOptions userOptions) 2020-03-18T22:19:31.468028355Z at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1 重试)
2020-03-18T22:19:31.468032555Z at System.Data.SqlClient.SqlConnection.Open()
2020-03-18T22:19:31.468086255Z at testing_aspnetcore3.Controllers.GogoController.Index() in C:\trash垃圾\testing_aspnetcore3\Controllers\GogoController.cs:line 29
2020-03-18T22:19:31.468093955Z at lambda_method(Closure , Object , Object[] )
2020-03-18T22:18:391.155Z at Microsoft ObjectMethodExecutor.Execute(Object target, Object[] parameters)
2020-03-18T22:19:31.468589455Z at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor controller, executor, ObjectMethodExecutor) )
2020-03-18T22:19:31.468601655Z 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()
2020-03-18T22:19:31.468841055Z 在 Microsoft.NextMvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync() Scope& scope, Object& state, Boolean& isCompleted)
2020-03-18T22:19:31.468852055Z at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()
2020-03-18T2165568: traceZ从之前抛出异常的位置 ---
2020-03-18T22:19:31.468860855Z 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
2020-03-18T22:19:31.468865155Z at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
2020-03-18T22:185ZspCore.466:185ZspCore.466 Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
2020-03-18T22:19:31.468881555Z --- 从上一个抛出异常的位置开始的堆栈跟踪结束 ---
2020-03-18T22:19:31.465NetZ8885 .Mvc.Infrastructure.ResourceInvoker.g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
2020-03-18T22:19:31.468890255Z at Microsoft.AspNetCore.Mvc.Infrastructure.Mvc.Infra重新抛出(ResourceExecutedContextSealed 上下文)
2020-03-18T22:19:31.468894155Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean&isCompleted)
2020-03-18T22:18:3981.456 at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
2020-03-18T22:19:31.468901955Z --- 从上一个抛出异常的位置开始的堆栈跟踪结束 ---
2020-03-18T22:19:31.465spNetCoreA.905 .Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
2020-03-18T22:19:31.469268156Z 在 Microsoft.AspNetCore.Routing.EndpointMiddleware.g6_A requestRequestEndpoint , IDisposable端点, IDisposable记录器)
2020-03-18T22:19:31.469314656Z 在 Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
2020-03-18T22:19:31.469324256Z 在 Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
下面是访问数据库的代码:
public IActionResult Index()
{
using (var conn = new SqlConnection(ConnectionString))
using (var sqlCommand = new SqlCommand("SELECT top 1 * from login", conn))
{
conn.Open();
using (var reader = sqlCommand.ExecuteReader())
{
reader.Read();
return Ok(reader["Username"]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
PS 在 Linux Container 中部署时出现问题。不会发生在依赖于框架的 Windows 部署上,也不会发生在 Windows 容器上。
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |