Простейшее приложение AspNetCore MVC в Linux Службе приложений не может подключиться к SQL Базе данных сервера - PullRequest
0 голосов
/ 19 марта 2020

Сводка

Я недавно обновил службу приложений Linux, размещенную с ASP. NET Core MVC 2.2 до 3.1, и с тех пор, как мое приложение больше не может обращаться к базе данных SQL Server. который живет в ВМ, также в Azure.

Выводы

Я развернул в Linux Службе приложений пустое ASP. NET Ядро MVC 3.1 приложения, которое имеет 2 вида - одно, которое получено в результате от контроллера со стати c data (return "Hello world!") и тот, который подключается к базе данных.

Приложение отлично работает на моем компьютере, однако в Azure работает только представление "stati c". Когда я пытаюсь получить представление с доступом к базе данных, я получаю сообщение об ошибке 502 после более долгого времени ожидания (~ 4 мин)

502 - веб-сервер получил неверный ответ, выступая в качестве шлюза или прокси-сервер. Проблема со страницей, которую вы ищете, и она не может быть отображена. Когда веб-сервер (выступая в качестве шлюза или прокси-сервера) связывался с вышестоящим сервером контента, он получал недопустимый ответ от сервера контента.

Когда я просматривал план приложения, я вижу этот ЦП набрал 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, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)<br> 2020-03-18T22:19:31.468019355Z at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions)
2020-03-18T22: 19: 31.468023955Z в System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection (DbConnection externalConnection, DbConnectionFactory connectionFactory, TaskCompletionSource *1022* *1022* 1025 * Retry : 19: 31.468032555Z в System.Data.SqlClient.SqlConnection.Open ()
2020-03-18T22: 19: 31.468086255Z в testing_aspnetcore3.Controllers.GogoController.Index () в C: \ work \ trash \ trash \ testing_aspnetcore3 \ Controllers \ GogoController.cs: строка 29
2020-03-18T22: 19: 31.468093955Z в lambda_method (замыкание, объект, объект [])
2020-03-18T22: 19: 31.468098155Z в Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute (цель объекта, параметры объекта [])
2020-03 -18T22: 19:. 31.468589455Z в Microsoft.AspNetCore Mvc .Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute (IActionResultTypeMapper преобразователь, ObjectMethodExecutor исполнитель, контроллер объекта, объект [] аргументы) * * 2020-03-18T22 тысячу тридцать-один: 19: +31,468601655 Z в Microsoft.AspNetCore. Mvc .Infrastructure.ControllerActionInvoker.InvokeActionMethodAsyn c ()
2020-03-18T22: 19: 31.468841055Z в Microsoft.AspNetCore. Mvc .Infrastructure.ControllerActionInvoker. , Область действия и область действия, объект и состояние, логическое значение & isCompleted)
2020-03-18T22: 19: 31.468852055Z в Microsoft.AspNetCore. Mvc .Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsyn c ()
2020-03-18T : 19: 31.468856555Z --- Конец трассировки стека из предыдущего расположения, в котором было сгенерировано исключение ---
2020-03-18T22: 19: 31.468860855Z в Microsoft.AspNetCore. Mvc .Infrastructure.ControllerActionInvoker.Rethrow ( ActionExecutedContextSealed context)
2020-03-18T22: 19: 31.468865155Z в Microsoft.As pNetCore. Mvc .Infrastructure.ControllerActionInvoker.Next (State & next, Scope & scope, Object & state, Boolean & isCompleted)
2020-03-18T22: 19: 31.468869555Z в Microsoft.AspNetCore. Mvc .Infrastructure.Controlction. InvokeInnerFilterAsyn c ()
2020-03-18T22: 19: 31.468881555Z --- Конец трассировки стека из предыдущего местоположения, в котором было сгенерировано исключение ---
2020-03-18T22: 19: 31.468885855Z в Microsoft. AspNetCore. Mvc .Infrastructure.ResourceInvoker.g__Awaited | 24_0 (ResourceInvoker invoker, Task lastTask, State next, Область действия, состояние объекта, Boolean isCompleted)
2020-03-18T22: 19: 31.468890255Z в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.Rethrow (контекст ResourceExecutedContextSealed)
2020-03-18T22: 19: 31.468894155Z в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.Next (State & next, область действия, область действия, объект и состояние Boolean & isCompleted)
2020-03-18T22: 19: 31.468898155Z в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.InvokeFilterPipelineAsyn c ()
2020-03-18T22: 19: 31.468901955Z - - Трассировка конца стека из предыдущего местоположения, в котором было сгенерировано исключение ---
2020-03-18T22: 19: 31.468905955Z в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.g__Awaited | 17_0 (средство вызова ResourceInvoker, задача Task) , IDisposable scope)
2020-03-18T22: 19: 31.469268156Z в Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTa sk | 6_0 (конечная точка конечной точки, запрос задачи, регистратор ILogger)
2020-03-18T22: 19: 31.469314656Z в Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke (контекст HttpContext)
2020-03-18T22: 19 : 31.469324256Z в Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke (контекст HttpContext)

Подробности

Вот код для доступа к базе данных:

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["Brugernavn"]);
        }
    }
}
...