У меня есть экземпляр базы данных 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, TaskCompletionSource
1 повтор, DbConnectionOptions userOptions) в System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection externalConnect) ion, DbConnectionFactory ConnectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions)at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1 повтор) в System.Data.SqlClient.SqlConnection.Open() в AnFramework.Data.Core.ConnectionManager.GetConnection(String DatabaseName) в AnFramework.Data.Core.ConnectionManager.PerformDatabaseOperation (Int32 opCode, IConnectionManaged targetObject, параметры DbOperationOptions) в
Ниже показано, как я подключаюсь к 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.Открыть();
Ниже описано, как я извлекаю данные, используя (область TransactionScope = new TransactionScope()) { using (var dbOperation = new DbOperation(opCode, GetConnection(targetObject.GetDatabaseName(opCode)), options)) { if (dbOperation.IsConnected) { targetObject .PerformOperation(dbOperation); } } область действия.Завершить(); }
@Kunal Chawla Вы развернули веб-API dotnet?
Ошибка подключения между веб-приложением Azure и базой данных SQL Azure возникает, когда в Azure нет добавленных зависимостей службы и сведений о конфигурации.
Microsoft.EntityFrameworkCore.SqlServer
и Microsoft.EntityFrameworkCore.Tools
из NuGet.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; }
}
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.
Не могли бы вы поделиться кодом, с которым вы пробовали?