不支持的关键字:'port' - NpgSql

Keyword not supported: 'port' - NpgSql

我在使用 Azure 网络应用程序时遇到以下问题:

发布时出现如下错误:

Keyword not supported: 'port'.
   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)
   at System.Data.SqlClient.SqlConnectionStringBuilder..ctor(String connectionString)
   at Microsoft.Web.Deployment.ConnectionStringMatcher.RemoveExtraSlashFromDataSourceName(String connectionString)
   at Microsoft.Web.Deployment.ConnectionStringMatcher.GetStandardConnectionString(String userConnectionString, Boolean isSqlCE)
   at Microsoft.Web.Deployment.SqlInfo.GetBuilder(String connectionString, String errorMessageFormat)

appsettings.json:

"ConnectionStrings": {
    "DefaultConnection": "Server=xxxxx;Database=xxxxx;Port=5432;User Id=test;Password=xxxxx;Ssl Mode=Require;",
    "ProviderName": "Npgsql"
  },

Startup.cs:

services.AddDbContext<Context>(options => options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection")));

您的 PostgreSQL 服务器是在 Azure 中创建的吗?

根据错误提示,端口参数不应该出现在连接字符串中。

如果它是在 azure 中创建的,您的 DefaultConnection 应该类似于以下字符串。

Server=jasonp2testsql.postgres.database.azure.com;Database={your_database};Port=5432;User Id=jasonp2@jasonp2testsql;Password={your_password};Ssl Mode=Require;

你也可以参考这个post。

C# SqlConnection Exception: Keyword not Supported 'Port'

而且the offical document对你有用。