如何在Entity Framework中使用连接字符串指定用户名

5
我的ASP.Net Core应用程序一直尝试使用“默认”用户名登录数据库,即使我在连接字符串中指定了不同的用户。因此,我一直收到相同的异常,显示如下内容: "未经处理的异常发生在处理请求时。SqlException: 无法打开请求的 'testDB' 数据库。登录失败。用户'DESKTOP-555DDD\skorejen'登录失败。" 即使我使用了已定义不同用户名的连接字符串。 我该如何修复这个问题,以便我的应用程序使用连接字符串指定的用户名进行登录? 连接字符串:
{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=testDB;User Id=myusername;Trusted_Connection=True;"
  },

ASP.Net Core的Startup.cs文件:

public void ConfigureServices(IServiceCollection services)
        {
             services.AddDbContext<OrderContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
        }

当使用Tructed Connection时,将使用已验证的Windows用户的凭据;用户名和密码选项将被忽略。您需要让应用程序在适当的AD帐户下运行(通过模拟),将要使用该应用程序的用户添加到有效登录中(最好使用AD组,而不是添加每个登录名),或者改用SQL Authetication。 - Thom A
2个回答

11
您的ConnectionStrings必须采用以下格式:

使用凭据(SQL身份验证):

"ConnectionStrings": {
  "DefaultConnection": "Server=myServerAddress; Database=myDataBase; User Id=myUsername; Password=myPassword; Trusted_Connection=false; MultipleActiveResultSets=true;"
}

不使用凭据(Windows身份验证):

"ConnectionStrings": {       
  "DefaultConnection": "Server=myServerAddress; Database=myDataBase; Trusted_Connection=True; MultipleActiveResultSets=true"        
} 

谢谢!我正在使用XAML的app.config,所以不得不从这个json文件中进行适应 - 这非常简单。'<connectionStrings> <add name="AppNameForDb" connectionString="Server= ... MultipleActiveResultSets=true;" providerName="System.Data.SqlClient"/> </connectionStrings>' - undefined

3
您需要启用SQL身份验证模式,将该用户添加到SQL服务器的登录用户中,并在连接字符串中指定密码。

示例连接字符串:

Server = myServerAddress; Database = myDataBase; User Id = myUsername; Password = myPassword;

(来源)

启用SQL身份验证模式

enter image description here


注:Original Answer 翻译成"最初的回答"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接