Установить поставщика базы данных для Web Deploy - PullRequest
0 голосов
/ 01 мая 2018

Я использую VS 2017 для проекта с .NET Core 2.0 и базой данных PostgreSql. Npgsql используется в качестве провайдера БД.

Вот как настроен DbContext:

public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
          options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"),
             b => b.MigrationsAssembly("MyAssembly")));

        ...
    }

Это конфигурация развертывания. Configuration Когда Web Deploy пытается применить миграцию в процессе публикации, появляется сообщение об ошибке:

Ошибка: не удалось выполнить задачу веб-развертывания.

Значение '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 (строковое значение) в 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 голосов
/ 01 мая 2018

Используете ли вы в качестве строки подключения 'User ID = postgres; Host = localhost; Port = 5432; Database = MyDatabase'?

Мне кажется, проблема в том, что вы пишете 'ID пользователя', в котором есть пробел, и вы также не включаете пароль в строку подключения.

Можете ли вы попробовать эту строку вместо, после того, как вы введете пароль?

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