我正在开发一个Azure网站,该网站连接到新的Azure Postgresql数据库。
这个错误似乎是在周末开始的。我最后一次在周五尝试时工作正常。我的Azure站点计划的IP地址似乎发生了变化,我编辑了Azure Postgres防火墙规则。
非常奇怪的部分是" 0.0.0.0"主办。 Web服务器如何看起来像IP地址" 0.0.0.0"到数据库?我添加了" 0.0.0.0"防火墙,但没有任何影响。我当然不能直接在Azure上编辑pg_hba.conf文件。
此外,从我的开发计算机运行时,它工作正常。我尝试重新部署我的网站,没有快乐。
这是完整的堆栈跟踪:
[PostgresException (0x80004005): 28000: no pg_hba.conf entry for host "0.0.0.0", user "UserName", database "orders", SSL on]
Npgsql.NpgsqlConnector.DoReadMessage(DataRowLoadingMode dataRowLoadingMode, Boolean isPrependedMessage) +310
Npgsql.NpgsqlConnector.ReadMessageWithPrepended(DataRowLoadingMode dataRowLoadingMode) +195
Npgsql.NpgsqlConnector.HandleAuthentication(String username, NpgsqlTimeout timeout) +57
Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout) +299
Npgsql.ConnectorPool.Allocate(NpgsqlConnection conn, NpgsqlTimeout timeout) +573
Npgsql.NpgsqlConnection.OpenInternal() +366
Npgsql.NpgsqlConnection.Open() +4
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +120
System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) +160
System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) +108
MapHazardsPro4.Functs.GetUserTable() in C:\inetpub\wwwroot\maphazardspro_q3_2017\Functs.vb:539
MapHazardsPro4.Global.Application_Start(Object sender, EventArgs e) in C:\inetpub\wwwroot\maphazardspro_q3_2017\Global.asax.vb:49
[HttpException (0x80004005): 28000: no pg_hba.conf entry for host "0.0.0.0", user "UserName", database "orders", SSL on]
System.Web.HttpApplicationFactory. EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +10104513
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +173
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296
[HttpException (0x80004005): 28000: no pg_hba.conf entry for host "0.0.0.0", user "UserName", database "orders", SSL on]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +10085804
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +95
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254
答案 0 :(得分:4)
我遇到了同样的问题。添加了防火墙规则0.0.0.0 - 255.255.255.255
答案 1 :(得分:0)
我通过以下方式解决了这个问题:
1:关闭psql防火墙规则中的所有端口 2:尝试连接(当然会失败) 3:从Azure控制台,打开最后一个postgres服务器日志文件。
在这里你应该这样说:
2017-11-17 08:12:03 UTC-5a0e99d3.713c-LOG: connection received: host=xxx.xxx.xxx.xxx port=0
2017-11-17 08:12:04 UTC-5a0e99d3.713c-FATAL: no pg_hba.conf entry for host "0.0.0.0", user "smile", database "smiledb", SSL on
现在,您可以为日志中显示的xxx.xxx.xxx.xxx地址创建规则,事情应该有效...... 希望它有所帮助!
答案 2 :(得分:0)
您可以为运行应用程序节点的VNet设置 VNet规则。
此VNet必须具有一个带有服务终结点 Microsoft.SQL 的子网。
对于Postgres DB也是如此。这是所有SQL数据库服务终结点的某种形式。 当使用服务端点设置VNet时,可以在Azure门户Postgres视图的“连接安全性”部分中添加此VNet,您的应用程序节点将能够与Postgres进行通信。
https://docs.microsoft.com/en-us/azure/postgresql/howto-manage-vnet-using-portal
我认为这里的关键问题是要了解VNet中的服务端点。