我有一个Azure Sql DB实例,当我在本地运行Web应用程序时没有问题。与 Azure SQL DB 的连接在本地成功建立,我也获取了数据。尽管当我将 Web 应用程序发布到 Azure 时,我收到 500 内部服务器错误(错误的详细信息如下)。有人可以帮助建议一些正确的步骤吗? Web App正在.Net8.0上运行
2024-04-18 13:11:22.251 +00:00 [错误] Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer:连接ID“17221764975870083192”,请求ID“40000079-0000-ef00-b63f-84710c7967bb” :应用程序引发了未处理的异常。System.Data.SqlClient.SqlException(0x80131904):向服务器发送请求时发生传输级错误。 (提供程序:会话提供程序,错误:19 - 物理连接不可用)在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity 标识、SqlConnectionString 连接选项、SqlCredential 凭据、对象提供程序信息、字符串 newPassword、SecureString newSecurePassword、布尔值重定向UserInstance、SqlConnectionString userConnectionOptions、SessionData reconnectSessionData、布尔 applyTransientFaultHandling、字符串 accessToken)at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions 选项、DbConnectionPoolKey poolKey、对象 poolGroupProviderInfo、DbConnectionPool 池、DbConnection owningConnection、DbConnectionOptions userOptions)at System.Data.ProviderBase.DbConnectionFactory.CreateNon池化连接(DbConnection owningConnection、DbConnectionPoolGroup poolGroup、DbConnectionOptions userOptions)at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection、TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource
1 重试、DbConnectionOptions userOptions)at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection,工厂连接工厂,TaskCompletionSource1 retry, DbConnectionOptions userOptions)at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1重试)在System.Data.SqlClient.SqlConnection.Open()在AnFramework.Data.Core.ConnectionManager.GetConnection(字符串数据库名称)在AnFramework.Data.Core.ConnectionManager.PerformDatabaseOperation(Int32 opCode,IConnectionManaged targetObject ,DbOperationOptions 选项)位于
当 Azure 中没有添加服务依赖项和配置详细信息时,Azure Web App 和 Azure SQL 数据库之间会出现错误连接问题。
Microsoft.EntityFrameworkCore.SqlServer
和 Microsoft.EntityFrameworkCore.Tools
包。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
中的 Azure SQL 数据库连接字符串: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 中,通过迁移更新数据库需要通过迁移
file中的
Up
方法应用更改,或通过 Down
方法回滚更改。要执行或反转迁移,您可以使用 Update-Database
命令。
在 Web 应用程序设置中添加包含 SQL 连接字符串值的配置名称
AZURE_SQL_CONNECTIONSTRING
,以及包含 Azure Cache for Redis 连接字符串值的名称 AZURE_REDIS_CONNECTIONSTRING
。
在 Web
App中添加具有值 YourConnectionstrings 的配置名称
AZURE_SQL_CONNECTIONSTRING
和具有值 YourAzureCacheRedisConnectionString 的名称AZURE_REDIS_CONNECTIONSTRING
。
添加服务依赖项并将应用程序部署到 Azure Web App。
蔚蓝:
对于 Azure SQL,请参阅此文档,了解在 Azure 上创建和部署 .NET 7 Minimal API 和 SQL 数据库