用户myid在从azure应用服务启动.net core web应用程序时登录失败

4nkexdtk  于 2023-05-18  发布在  .NET
关注(0)|答案(1)|浏览(182)

我有一个管道,可以在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,所以它被选中了。

tjjdgumg

tjjdgumg1#

在阅读了您的描述后,我认为问题与部署有关。所以请按照我的步骤来解决问题。

故障排除步骤

1.打开App Service Editor (Preview)并检查appsettings.json文件。检查连接字符串是否正确?

1.如果连接字符串是正确的,并且问题仍然发生,那么您可以在Program.cs文件中对其进行硬编码。检查与代码或环境相关的问题?
1.请创建临时规则以允许所有ip访问防火墙中的数据库。

1.您已经确认连接字符串在SSMS中运行良好,那么请尝试使用vs2022连接它并获得新的连接字符串,我知道我们可以从Azure Portal获得它,请尝试。

复制新的连接字符串,并在appsettings.json文件中使用,或将其添加到Azure Portal中。
新的connectionstring格式为

Data Source=tcp:your_sqlserver.database.windows.net,1433;Initial Catalog=db_name;User ID=jason;Password=********;Connect Timeout=30;Encrypt=True;Trust Server Certificate=False;Application Intent=ReadWrite;Multi Subnet Failover=False

1.请检查Azure Portal中是否存在旧配置。检查步骤请参考最后一张截图。

温馨提示

通常我们的测试数据库链接放在appsettings.json文件中,部署时不需要修改它。我们可以在VS2022发布时添加服务器依赖项。

如果使用其他方法也没关系,我们可以在azure门户中手动添加,添加后appsetting.json文件中的配置会被覆盖。

相关问题