![](/img/trans.png)
[英]asp.net c# code works (from VS2022 and on IIS10) on local machine to connect to SQL Server DB it does not work on Webserver
[英]Untrusted Certificate Error when connecting to SQL Server running in Docker from .NET 7 API in VS2022
我有一个 API,我已经从 .NET Core 3.1 升级到 .NET 7。它现在在尝试连接到数据库时抛出错误。
错误是:
已成功与服务器建立连接,但随后在登录过程中发生错误。 (提供商:SSL 提供商,错误:0 - 证书链是由不受信任的机构颁发的。
我正在使用 VS2022,SQL 服务器 (mcr.microsoft.com/mssql/server:2022-latest) 在 Docker 容器中运行。
我正在使用 Docker 撰写:
version: '3.9'
services:
sql-server-db:
image: "mcr.microsoft.com/mssql/server:2022-latest"
container_name: sql-server-db
environment:
MSSQL_SA_PASSWORD: "P@ssw0rd"
ACCEPT_EULA: "Y"
ports:
- "1433:1433"
volumes:
- sql1:/var/opt/mssql
volumes:
sql1:
external: false
连接字符串是
server=127.0.0.1,1433;Initial Catalog=xxx;user id=sa;password=P@ssw0rd;Encrypt=False;TrustServerCertificate=True
从我读过的帖子来看, Encrypt=False
或TrustServerCertificate=True
应该可以解决这个问题,但两者都没有帮助,或者实际上两者都没有帮助。
我已经确认 SQL 服务器实例运行正常,我可以使用 SSMS 连接,使用连接字符串中的用户名和密码。
此外,我可以确认它正在与 .NET 6 一起使用,因此这绝对是 .NET 7 和 EntityFrameworkCore 7 的问题。
我只在更新我的应用程序后将“Trust Server Certificate=True”添加到我的连接字符串中。 尝试删除“Encrypt=False”。
正如我之前在您的 Mastodon 帖子中提到的,这是针对多个问题的包罗万象的错误消息。
我通过使用持久性标准卷解决了这个问题,另一个人在 GitHub 问题中提到,我看到他们通过应用密码要求解决了这个问题(我认为它们至少有 8 个字符,至少有一个小写字母,至少一个大写字母,至少一个数字和至少一个符号)。
我已经设法解决了这个问题。
我更改了存储库以注入 IDbContextFactory<> 并创建 DbContext,而不是直接注入 DbContext object。
public BookRepository(IDbContextFactory<SampleAPIContext> dbContextFactory, IRestToLinqParser<Book> parser, ILogger<BookRepository> logger) : base(dbContextFactory, parser, logger)
{
}
并更改我的 Startup.cs 以添加 IDbContextFactory 而不是 DBContext
services.AddDbContextFactory<SampleAPIContext>(
options => SqlServerDbContextOptionsExtensions.UseSqlServer(options, connectionString)
);
我不完全确定为什么这会有所不同,但确实如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.