为Web Deploy设置数据库提供程序

时间:2018-05-01 09:42:57

标签: c# postgresql .net-core webdeploy

我在使用.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")));

        ...
    }

这是部署的配置 Configuration 当Web Deploy尝试在发布过程中应用迁移时,会出现错误:

  

错误:Web部署任务失败。

     

值&#39;用户ID = postgres; Host = localhost; Port = 5432; Database = MyDatabase&#39;不是有效的连接字符串或绝对路径。请访问:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_INVALID_CONNECTION_STRING了解详情。

     

不支持关键字:&#39; host&#39;。      at System.Data.SqlClient.SqlConnectionStringBuilder.GetIndex(String keyword)      at System.Data.SqlClient.SqlConnectionStringBuilder.set_Item(String keyword,Object value)      at 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进行部署?

1 个答案:

答案 0 :(得分:0)

您是否使用'User ID = postgres; Host = localhost; Port = 5432; Database = MyDatabase'作为您的连接字符串?

我认为问题在于您编写了“用户ID”,其中包含空格,并且您也没有在连接字符串中包含密码。

在填写密码后,您可以尝试使用此行吗?

"DefaultConnection": "Server=localhost;Port=5432;Database=MyDatabase;User=postgres;Password=YourPassword"