提问人:Martin M 提问时间:10/2/2023 最后编辑:Ehsan SajjadMartin M 更新时间:10/2/2023 访问量:55
SqlClient 忽略连接字符串中的用户 ID [closed]
SqlClient ignores User Id in connection string [closed]
问:
我有一个使用 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());
}
}
答:
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
谢谢!这说明了很多!我现在已经修好了..
评论
Integrated Security=false;
Integrated Security=SSPI