SqlClient 忽略连接字符串中的用户 ID [closed]

SqlClient ignores User Id in connection string [closed]

提问人:Martin M 提问时间:10/2/2023 最后编辑:Ehsan SajjadMartin M 更新时间:10/2/2023 访问量:55

问:


这个问题是由错别字或无法再现的问题引起的。虽然类似的问题可能在这里是主题,但这个问题的解决方式不太可能帮助未来的读者。

上个月关闭。

我有一个使用 EntityFramework 的 C# 应用程序。 在我的 App.config 文件中,我得到了一个连接字符串,其中包含服务器、数据库、用户 ID 密码等。 但是,当我运行我的应用程序时,它会忽略用户 ID 并使用集成安全性,我在连接字符串中将其设置为 False。

那么,为什么我的应用程序一直在使用集成安全性呢?我可以将用户 ID 更改为任何内容,并且应用程序 stil 使用集成安全性。

连接字符串:

<add name="dbConString" connectionString="Server=dbServerName;Database=databaseName;User ID=sqlUserName; Password=sqlUserPassword; Integrated Security=false; TrustServerCertificate=True;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />

我的数据库上下文类中的代码:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    base.OnConfiguring(optionsBuilder);
    if (!optionsBuilder.IsConfigured)
    {
        optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["dbConString"].ToString());
    }
}
C# sql-server ado.net 连接字符串 sqlclient

评论

2赞 Panagiotis Kanavos 10/2/2023
EF Core 与连接字符串无关。它不是数据库驱动程序,而是 ADO。NET的工作。这是一个设置矛盾的错误连接字符串 - 但随后Integrated Security=false;Integrated Security=SSPI
0赞 Panagiotis Kanavos 10/2/2023
是否要连接 Windows 身份验证或 SQL Server 身份验证?如果需要 SQL,是否定义了登录名?

答:

4赞 Panagiotis Kanavos 10/2/2023 #1

首先,EF 是一个 ORM,而不是一个数据库驱动程序。它不连接到数据库本身,而是使用 ADO.NET 和适当的数据库驱动程序。

其次,连接字符串强制实施 Windows 身份验证。 指定两次,第二个设置覆盖第一个设置:Integrated Security

...Integrated Security=false; ...Integrated Security=SSPI;

若要使用 SQL Server 登录名,请不要指定:Integrated Security

Server=dbServerName;Database=databaseName;User ID=sqlUserName; Password=sqlUserPassword; TrustServerCertificate=True;

评论

0赞 Martin M 10/2/2023
谢谢!这说明了很多!我现在已经修好了..