【问题标题】:SQL Server connection string in Appsettings.json + .net Core 3.1Appsettings.json + .net Core 3.1 中的 SQL Server 连接字符串
【发布时间】:2021-01-22 10:07:28
【问题描述】:

我正在尝试在 .NET Core 3.1 中的 appsettings.json 中设置并连接到我的远程开发 SQL Server (SQL 2017),我尝试了以下方法但没有任何成功。

 "ConnectionStrings": {
//"DefaultConnection1": "DATA SOURCE=[servername];UID=[username];PWD=[password];DATABASE=[databasename]",
//"DefaultConnection2": "Data Source=[servername]; Initial Catalog=[databasename];User ID=[username];Password=[password]",
//"DefaultConnection3": "DataSource=[servername];Initial Catalog=[databasename];User Id=[username];password=[password]",
"DefaultConnection4": "Server=[servername];Database=[databasename];User Id=[username];password=[password];Trusted_Connection=False;MultipleActiveResultSets=true;" 
},

DefaultConnection1 错误:

ArgumentException:不支持关键字:'uid'。
Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.GetIndex(字符串 关键字))

DefaultConnection2 错误:

ArgumentException:不支持关键字:“初始目录”。 Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.GetIndex(字符串 关键字)

DefaultConnection3 错误:

ArgumentException:不支持关键字:“初始目录”。 Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.GetIndex(字符串 关键字)

DefaultConnection4 错误:

ArgumentException:不支持关键字:“服务器”。
Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.GetIndex(字符串 关键字)

非常感谢任何想法、指示或帮助。

【问题讨论】:

  • 您是否在连接字符串中使用了 ([servername]) 之类的占位符,还是仅仅出于安全原因?我的意思是在你真正的应用程序设置中,你明确写了服务器 IP 或服务器名称?
  • 嗨,Majid,出于安全原因,这些只是占位符,在实际文件中,我使用了正确的凭据并能够通过 SSMS 登录。
  • 我想知道是否由于“Microsoft.Data.Sqlite.SqliteConnectionStringBuilder”而发生错误

标签: sql-server asp.net-core


【解决方案1】:

可能只是因为您不应该将 cmets (//) 放在 JSON 中,因为 JSON 是一种数据格式并且不支持 cmets。因此,请尝试从您的配置中实际删除以 // 开头的行。

【讨论】:

    【解决方案2】:

    感谢您的帮助和建议,我可能刚刚找到解决方案,现在可以成功连接SQL数据库,问题如下:

    解决方案上安装了以下软件包:

    Microsoft.Data.Sqlite.SqliteConnectionStringBuilder
    

    在 Startup.cs 中,ConfigureServices(IServiceCollection services) 中使用了以下行:

    services.AddDbContext<ApplicationDbContext>(options => options.UseSqlLite(Configuration.GetConnectionString("DefaultConnection")));
    

    但是经过研究我发现我应该使用以下行:

    services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    

    由于缺少以下软件包而无法访问:

    Microsoft.EntityFrameworkCore.SqlServer

    使用以下命令通过包管理器安装此包后:

    Install-Package Microsoft.EntityFrameworkCore.SqlServer
    

    我能够使用以下连接字符串访问 SQL 服务器:

      "ConnectionStrings": {
        "DefaultConnection": "Server=[servername];Database=[databasename];Persist Security Info=True;User ID=[username];Password=[password];MultipleActiveResultSets=True;"
      },
    

    为了安全起见,正如 Christian 所指出的,我还删除了其他连接字符串引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      相关资源
      最近更新 更多