我有一个管道,可以在Azure中部署应用程序服务,SQL Server和SQL DB。在应用程序服务中部署压缩的应用程序。
但是,当我从开发工具下的控制台运行以下命令时,我得到一个异常。
命令
dotnet mywebapp.dll
例外
Unhandled exception. Microsoft.Data.SqlClient.SqlException (0x80131904): Login failed for user 'myid'.
我有一个带有两个DB的SQL服务器,下面是startup.cs中用于连接字符串的代码(.net 6 Web应用程序)
services.AddDbContext<MyDBContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("MyDBContext"));
options.ConfigureWarnings(warnings => warnings.Ignore(CoreEventId.NavigationBaseIncludeIgnored));
});
services.AddHangfire(options =>
{
options.UseSqlServerStorage(() => new Microsoft.Data.SqlClient.SqlConnection(Configuration.GetConnectionString("MyHangfireContext")), hangfireConfig);
});
hangfireConfig已被定义为单独的变量(SqlServerStorageOptions)
我在appsettings中的连接字符串
"MyHangfireContext": "Server=tcp:mydb.database.windows.net,1433;Initial Catalog=HangfireDB;Persist Security Info=False;User ID=myid;Password=mypassword;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
"MyDBContext": "Server=tcp:mydb.database.windows.net,1433;Initial Catalog=MyAppDB;Persist Security Info=False;User ID=myid;Password=mypassword;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
另外要补充的是,这个应用程序设置是一个特定于环境的应用程序设置,我定义了ASPNETCORE_ENVIRONMENT,所以它被选中了。
1条答案
按热度按时间tjjdgumg1#
在阅读了您的描述后,我认为问题与部署有关。所以请按照我的步骤来解决问题。
故障排除步骤
1.打开
App Service Editor (Preview)
并检查appsettings.json
文件。检查连接字符串是否正确?1.如果连接字符串是正确的,并且问题仍然发生,那么您可以在Program.cs文件中对其进行硬编码。检查与代码或环境相关的问题?
1.请创建临时规则以允许所有ip访问防火墙中的数据库。
1.您已经确认连接字符串在SSMS中运行良好,那么请尝试使用vs2022连接它并获得新的连接字符串,我知道我们可以从Azure Portal获得它,请尝试。
复制新的连接字符串,并在appsettings.json文件中使用,或将其添加到Azure Portal中。
新的connectionstring格式为
1.请检查Azure Portal中是否存在旧配置。检查步骤请参考最后一张截图。
温馨提示
通常我们的测试数据库链接放在appsettings.json文件中,部署时不需要修改它。我们可以在VS2022发布时添加服务器依赖项。
如果使用其他方法也没关系,我们可以在azure门户中手动添加,添加后appsetting.json文件中的配置会被覆盖。