【问题标题】:Set database provider for Web Deploy为 Web Deploy 设置数据库提供程序
【发布时间】:2018-10-11 08:47:34
【问题描述】:

我在具有 .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(字符串关键字) 在 System.Data.SqlClient.SqlConnectionStringBuilder.set_Item(字符串关键字,对象值) 在 System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(字符串值) 在 System.Data.SqlClient.SqlConnectionStringBuilder..ctor(字符串连接字符串) 在 Microsoft.Web.Deployment.ConnectionStringMatcher.RemoveExtraSlashFromDataSourceName(字符串连接字符串) 在 Microsoft.Web.Deployment.ConnectionStringMatcher.GetStandardConnectionString(字符串 userConnectionString,布尔 isSqlCE) 在 Microsoft.Web.Deployment.SqlInfo.GetBuilder(字符串 connectionString,字符串 errorMessageFormat) 发布部署失败。

似乎 Web Deploy 尝试通过默认的 SqlServer 数据库提供程序解析连接字符串。如何将数据库提供程序切换到 Npgsql 进行部署?

【问题讨论】:

    标签: c# postgresql .net-core webdeploy


    【解决方案1】:

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

    我认为问题在于你写的“用户 ID”里面有一个空格,而且你也没有在连接字符串中包含密码。

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

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

    【讨论】:

    • 'User Id...' 是PosgreSql连接字符串的语法。它是有效的并且在本地机器上工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 2021-05-04
    • 2017-09-02
    相关资源
    最近更新 更多