c# - 为 Web Deploy 设置数据库提供程序
问题描述
我在具有 .NET Core 2.0 和 PostgreSql 数据库的项目中使用 VS 2017。Npgsql 用作数据库提供程序。
这是 DbContext 的配置方式:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"),
b => b.MigrationsAssembly("MyAssembly")));
...
}
这是部署的配置 当 Web Deploy 尝试在发布过程中应用迁移时,它会收到错误:
错误:Web 部署任务失败。
值 'User ID=postgres;Host=localhost;Port=5432;Database=MyDatabase' 不是有效的连接字符串或绝对路径。了解更多信息:http: //go.microsoft.com/fwlink/ ?LinkId=221672#ERROR_INVALID_CONNECTION_STRING 。
不支持关键字:“主机”。在 System.Data.SqlClient.SqlConnectionStringBuilder.GetIndex(String 关键字) 在 System.Data.SqlClient.SqlConnectionStringBuilder.set_Item(String 关键字,对象值) 在 System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value) 在 System.Data。 SqlClient.SqlConnectionStringBuilder..ctor(String connectionString) 在 Microsoft.Web.Deployment.ConnectionStringMatcher.RemoveExtraSlashFromDataSourceName(String connectionString) 在 Microsoft.Web.Deployment.ConnectionStringMatcher.GetStandardConnectionString(String userConnectionString, Boolean isSqlCE) 在 Microsoft.Web.Deployment.SqlInfo。 GetBuilder(String connectionString, String errorMessageFormat) 发布部署失败。
似乎 Web Deploy 尝试通过默认的 SqlServer 数据库提供程序解析连接字符串。如何将数据库提供程序切换到 Npgsql 进行部署?
解决方案
您是否使用 'User ID=postgres;Host=localhost;Port=5432;Database=MyDatabase' 作为连接字符串?
我认为问题在于您编写的“用户 ID”中有一个空格,并且您也没有在连接字符串中包含密码。
填写密码后,您可以尝试此行吗?
"DefaultConnection": "Server=localhost;Port=5432;Database=MyDatabase;User=postgres;Password=YourPassword"
推荐阅读
- php - php查找文件大小相似的文件并删除最旧的文件
- javascript - 测试服务时未调用 NestJS UseFilter
- excel - 比较两列,清除重复单元格
- laravel - Laravel:没有找到数据
- java - 有人可以解释一下 Eckel 的“On Java 8”一书中关于接口的例子吗?
- laravel - 如何连接 Laravel Lumen 和 Stackdriver
- java - 如何在 Spark 中确定最佳 shuffle 分区数
- python - 使用多线程同时打开 2 个 Webdriver
- javascript - MongoDB在NodeJS中获取字段的值
- airflow - 有没有办法设置气流 dag,如果 dag-b 仍在运行,则 dag-a 不会运行,反之亦然?