You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core中Connection string关键字'server'不支持问题求助

问题:EF Core使用Sqlite时出现Connection String 'server'关键字不支持错误

我们大学课程的项目之前多次构建都没问题,但最近修改后出现了如下错误:

Microsoft.EntityFrameworkCore.Query[10100]
  An exception occurred while iterating over the results of a query for context type 'AdministrationAPI.Data.AppDbContext'.
  System.ArgumentException: Connection string keyword 'server' is not supported. For a possible alternative, see https://go.microsoft.com/fwlink/?linkid=2142181.
     at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.GetIndex(String keyword)
     at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.set_Item(String keyword, Object value)
     at System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value)
     at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder..ctor(String connectionString)
     at Microsoft.Data.Sqlite.SqliteConnectionFactory.GetPoolGroup(String connectionString)
     at Microsoft.Data.Sqlite.SqliteConnection.set_ConnectionString(String value)
     at Microsoft.Data.Sqlite.SqliteConnection..ctor(String connectionString)
     at Microsoft.EntityFrameworkCore.Sqlite.Storage.Internal.SqliteRelationalConnection.CreateDbConnection()
     at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.get_DbConnection()
     at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.CreateDbCommand(RelationalCommandParameterObject parameterObject, Guid commandId, DbCommandMethod commandMethod)
     at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
     at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken)
     at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
  System.ArgumentException: Connection string keyword 'server' is not supported. For a possible alternative, see https://go.microsoft.com/fwlink/?linkid=2142181.
     at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.GetIndex(String keyword)
     at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.set_Item(String keyword, Object value)
     at System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value)
     at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder..ctor(String connectionString)
     at Microsoft.Data.Sqlite.SqliteConnectionFactory.GetPoolGroup(String connectionString)
     at Microsoft.Data.Sqlite.SqliteConnection.set_ConnectionString(String value)
     at Microsoft.Data.Sqlite.SqliteConnection..ctor(String connectionString)
     at Microsoft.EntityFrameworkCore.Sqlite.Storage.Internal.SqliteRelationalConnection.CreateDbConnection()
     at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.get_DbConnection()
     at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.CreateDbCommand(RelationalCommandParameterObject parameterObject, Guid commandId, DbCommandMethod commandMethod)
     at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
     at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken)
     at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
Unhandled exception. System.ArgumentException: Connection string keyword 'server' is not supported. For a possible alternative, see https://go.microsoft.com/fwlink/?linkid=2142181.
   at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.GetIndex(String keyword)
   at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.set_Item(String keyword, Object value)
   at System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value)
   at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder..ctor(String connectionString)
   at Microsoft.Data.Sqlite.SqliteConnectionFactory.GetPoolGroup(String connectionString)
   at Microsoft.Data.Sqlite.SqliteConnection.set_ConnectionString(String value)
   at Microsoft.Data.Sqlite.SqliteConnection..ctor(String connectionString)
   at Microsoft.EntityFrameworkCore.Sqlite.Storage.Internal.SqliteRelationalConnection.CreateDbConnection()
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.get_DbConnection()
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.CreateDbCommand(RelationalCommandParameterObject parameterObject, Guid commandId, DbCommandMethod commandMethod)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
   at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable`1 asyncEnumerable, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable`1 asyncEnumerable, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Identity.RoleManager`1.RoleExistsAsync(String roleName)
   at Program.<Main>$(String[] args) in C:\Users\xxx\Documents\GitHub\xxx\xxx\Program.cs:line 102
   at Program.<Main>(String[] args)
PS C:\Users\xxx\Documents\GitHub\xxx\xxx>

项目的连接字符串配置如下:

"ConnectionStrings": {
    "DefaultConnectionString": "server=localhost;User Id=root;password=password;database=ourproject;",
    "DefaultConnectionString_Select": "server=localhost;User Id=root;password=password;database=ourproject_application;",
    "SqliteMain": "Data Source=main.db",
    "SqliteProvider": "Data Source=provider.db",
    "OurprojectDB": "Data Source=SQL8005.site4now.net;Initial Catalog=db_a96e9a_ourproject001;User Id=db_a96e9a_ourproject001_admin;Password=mihighschool"
}

问题原因与解决方法

  • 核心问题:你的AppDbContext当前被配置为使用Sqlite数据库驱动,但传入的却是适用于MySQL/SQL Server的连接字符串(包含server关键字)。Sqlite是文件型数据库,它的连接字符串不需要server这类指向远程服务器的配置,只认Data Source这类指定本地数据库文件的关键字,所以会抛出这个错误。

  • 排查与修复方向:

    1. 检查数据库驱动配置:打开Program.cs(错误提示里的文件),找到AppDbContext的服务注册代码,看看是不是不小心把原本的UseMySql/UseSqlServer改成了UseSqlite。如果是,改回对应数据库的驱动即可。
      示例(MySQL配置):
      builder.Services.AddDbContext<AppDbContext>(options =>
          options.UseMySql(builder.Configuration.GetConnectionString("DefaultConnectionString"), 
              new MySqlServerVersion(new Version(8, 0, 28))));
      
    2. 检查连接字符串指向:如果确实要使用Sqlite,那要确保AppDbContext使用的是SqliteMain或SqliteProvider这两个Sqlite专用的连接字符串,而不是DefaultConnectionString这类带server的。
      示例(Sqlite配置):
      builder.Services.AddDbContext<AppDbContext>(options =>
          options.UseSqlite(builder.Configuration.GetConnectionString("SqliteMain")));
      

内容的提问来源于stack exchange,提问作者l0ner9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:33:09