Подключение базы данных SQL Azure из веб-приложения Azure

У меня есть экземпляр базы данных Azure Sql, и при локальном запуске веб-приложения проблем не возникает. Соединение с базой данных SQL Azure установлено успешно локально, и я также получаю данные. Однако, когда я публикую веб-приложение в Azure, я получаю ошибку 500 Internal server (подробности об ошибке приведены ниже). Может ли кто-нибудь помочь, предложив несколько правильных шагов. Веб-приложение работает на .Net8.0.

2024-04-18 13:11:22.251 +00:00 [Ошибка] Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer: идентификатор соединения «17221764975870083192», идентификатор запроса «40000079-0000-ef00-b63f-84710c7967bb»: An Приложением было выдано необработанное исключение.System.Data.SqlClient.SqlException (0x80131904): при отправке запроса на сервер произошла ошибка транспортного уровня. (поставщик: поставщик сеансов, ошибка: 19 – физическое соединение невозможно использовать) в System.Data.SqlClient.SqlInternalConnectionTds..ctor(идентификатор DbConnectionPoolIdentity, SqlConnectionString ConnectionOptions, учетные данные SqlCredential, ObjectProviderInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserConnectInstance, SqlCredential String userConnectionOptions, SessionData reconnectSessionData, логическое значение applyTransientFaultHandling, String accessToken) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection (параметры DbConnectionOptions, DbConnectionPoolKeypoolKey, ObjectpoolGroupProviderInfo, пул DbConnectionPool, DbConnection ownConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase .DbConnectionFactory.CreateNonPooledConnection (DbConnection owningConnection, DbConnectionPoolGrouppoolGroup, DbConnectionOptions userOptions) в System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 повтор, DbConnectionOptions userOptions) в System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection externalConnect) ion, DbConnectionFactory ConnectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions)at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1 повтор) в System.Data.SqlClient.SqlConnection.Open() в AnFramework.Data.Core.ConnectionManager.GetConnection(String DatabaseName) в AnFramework.Data.Core.ConnectionManager.PerformDatabaseOperation (Int32 opCode, IConnectionManaged targetObject, параметры DbOperationOptions) в

Не могли бы вы поделиться кодом, с которым вы пробовали?

Balaji 19.04.2024 09:55

Ниже показано, как я подключаюсь к SQL SqlConnection sqlCon = null; sqlCon = новый SqlConnection(); если (!integratedSecurity) { SecureString pwd = new SecureString(); foreach (элемент var в dbPassword) { pwd.AppendChar(item); } pwd.MakeReadOnly(); SqlCredential cred = новый SqlCredential (userName, pwd); sqlCon.Credential = кредит; } sqlCon.ConnectionString = ConnectionString; sqlCon.Открыть();

Kunal Chawla 19.04.2024 09:58

Ниже описано, как я извлекаю данные, используя (область TransactionScope = new TransactionScope()) { using (var dbOperation = new DbOperation(opCode, GetConnection(targetObject.GetDatabaseName(opCode)), options)) { if (dbOperation.IsConnected) { targetObject .PerformOperation(dbOperation); } } область действия.Завершить(); }

Kunal Chawla 19.04.2024 09:59

@Kunal Chawla Вы развернули веб-API dotnet?

Sampath 24.04.2024 05:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
137
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка подключения между веб-приложением Azure и базой данных SQL Azure возникает, когда в Azure нет добавленных зависимостей службы и сведений о конфигурации.

  • Я использовал это руководство MSDOC для развертывания ASP. NET Core и базы данных SQL Azure в Службу приложений Azure и установите пакеты Microsoft.EntityFrameworkCore.SqlServer и Microsoft.EntityFrameworkCore.Tools из NuGet.
  • Код был взят из git.
public class Todo
{
    public int ID { get; set; }
    public string? Description { get; set; }

    [DisplayName("Created Date")]
    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
    public DateTime CreatedDate { get; set; }
}

  • Настройте кэш Azure для Redis, установите базу данных и сервер SQL Azure и обновите строки подключения к базе данных SQL Azure в appsettings.json, указав следующее:

Server=tcp:myserver.database.windows.net,1433;Initial Catalog=myDataBase;User Id=mylogin@myserver;Password=myPassword;Encrypt=True;Connection Timeout=30;

  • Используйте консоль диспетчера пакетов, чтобы выполнить новую миграцию в проект с использованием Entity Framework. Add-Migration YourMigrationName.

  • В EF Core обновление базы данных с помощью миграции влечет за собой применение изменений с помощью метода Up в файле миграции или откат изменений с помощью метода Down. Чтобы выполнить или отменить миграцию, вы должны использовать команду Update-Database.

  • Добавьте имя конфигурации AZURE_SQL_CONNECTIONSTRING со значением строки подключения SQL и имя AZURE_REDIS_CONNECTIONSTRING со значением строки подключения Azure Cache для Redis в настройках веб-приложения.

  • Добавьте Имя конфигурации AZURE_SQL_CONNECTIONSTRING со значением YourConnectionstrings и NameAZURE_REDIS_CONNECTIONSTRING со значением YourAzureCacheRedisConnectionString в веб-приложении.

Добавьте зависимости службы и разверните приложение в веб-приложении Azure.

Лазурь:

Для Azure SQL обратитесь к этой документации для создания и развертывания минимального API .NET и базы данных SQL в Azure.

Другие вопросы по теме