Ошибка CertificateUnknown при подключении к базе данных Heroku Postgres

Итак, я нахожусь в процессе перехода с SQL Server на PostgreSQL и создаю временное решение на период миграции, чтобы позволить моему приложению ASP.NET подключаться к моей базе данных Heroku Postgres и использовать Entity Framework и т. д.

До сих пор мне удавалось без проблем подключиться к базе данных из pgAdmin III для Windows, но при подключении из приложения ASP.NET я получаю эту ошибку:

CertificateUnknown: сертификат сервера не принят. Состояние цепочки: цепочка сертификатов обработана, но завершена корневым сертификатом, которому не доверяет поставщик доверия. . Указанное имя хоста отсутствует в сертификате.

Я все еще довольно новичок в героку, но не имеет смысла, почему я могу подключиться из pgAdmin с теми же настройками, что и мое приложение ASP.NET, но это не работает в самом приложении.

Полная трассировка стека:

[ClientAlertException: CertificateUnknown: сертификат сервера не принят. Состояние цепочки: цепочка сертификатов обработана, но завершена корневым сертификатом, которому не доверяет поставщик доверия. . Указанное имя хоста отсутствует в сертификате.]
TlsClientStream.TlsClientStream.SendAlertFatal(описание AlertDescription, строковое сообщение) +44
TlsClientStream.TlsClientStream.ParseCertificateMessage(Byte[] buf, Int32& pos) +1359
TlsClientStream.TlsClientStream.TraverseHandshakeMessages() +415
TlsClientStream.TlsClientStream.GetInitialHandshakeMessages(Boolean allowApplicationData) +336
TlsClientStream.TlsClientStream.PerformInitialHandshake(String hostName, X509CertificateCollection clientCertificates, RemoteCertificateValidationCallback remoteCertificateValidationCallback, Boolean checkCertificateRevocation) +198

[IOException: TlsClientStream.ClientAlertException: CertificateUnknown: сертификат сервера не принят. Состояние цепочки: цепочка сертификатов обработана, но завершена корневым сертификатом, которому не доверяет поставщик доверия. . Указанное имя хоста отсутствует в сертификате. at TlsClientStream.TlsClientStream.SendAlertFatal(описание AlertDescription, строковое сообщение) at TlsClientStream.TlsClientStream.ParseCertificateMessage(Byte[] buf, Int32& pos) at TlsClientStream.TlsClientStream.TraverseHandshakeMessages() at TlsClientStream.TlsClientStream.GetInitialHandshakeMessages(Boolean allowTStreamClientApplicationData). .PerformInitialHandshake(String hostName, X509CertificateCollection clientCertificates, RemoteCertificateValidationCallback remoteCertificateValidationCallback, Boolean checkCertificateRevocation)]
TlsClientStream.TlsClientStream.PerformInitialHandshake(String hostName, X509CertificateCollection clientCertificates, RemoteCertificateValidationCallback remoteCertificateValidationCallback, Boolean checkCertificateRevocation) +289
Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout ) +1372
Npgsql.NpgsqlConnector.Open(тайм-аут NpgsqlTimeout) +314
Npgsql.NpgsqlCon nection.OpenInternal() +461
Npgsql.NpgsqlConnection.Open() +4
Npgsql.NpgsqlServices.UsingPostgresDBConnection(соединение NpgsqlConnection, действие Action`1) +162
Npgsql.NpgsqlServices.GetDbProviderManifestToken(соединение DbConnection) +99
System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifestToken (соединение DbConnection) +87

[ProviderInconnectionException: поставщик не вернул строку ProviderManifestToken.]
System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifestToken(соединение DbConnection) +271
System.Data.Entity.Utilities.DbProviderServicesExtensions.GetProviderManifestTokenChecked( DbProviderServices providerServices, подключение DbConnection) +27

В Npgsql 3.1.5 попробуйте использовать «Сертификат доверенного сервера = true» в строке подключения. Пример строки подключения:


person barnacle.m    schedule 23.06.2016    source источник


Ответы (1)


[ProviderIncompatibleException: Произошла ошибка при доступе к базе данных. Обычно это означает, что соединение с базой данных не удалось. Убедитесь, что строка подключения верна и что для ее указания или поиска в файле конфигурации приложения используется соответствующий конструктор DbContext. См. http://go.microsoft.com/fwlink/?LinkId=386386. информация о DbContext и соединениях. Подробнее об ошибке см. во внутреннем исключении.]
System.Data.Entity.Utilities.DbProviderServicesExtensions.GetProviderManifestTokenChecked(DbProviderServices providerServices, соединение DbConnection) +89
System.Data.Entity.Infrastructure.‹>c__DisplayClass1.b__0 (Tuple

Server=[servername];Port=[port];User Id=[username];Password=[password];Database=[databasename];sslmode=Require;Trust Server Certificate=true
2.GetOrAdd(TKey key, Func_2_2.GetValue(TInput input) +123
System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +627 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +18
System.Data.Entity.Internal.Linq.InternalSet_3_1.get_InternalContext() +15 System.Data.Entity.Infrastructure.DbQuery_4_1 source, Expression_5_1.CallBeginDelegate(обратный вызов AsyncCallback, Object callbackState) +14
System. Фильтры Web.Mvc.Async.WrappedAsyncResultBase_6_1, ActionDescriptor, actionDescriptor, IDictionary_7_1.CallBeginDelegate (обратный вызов AsyncCallback, состояние обратного вызова объекта) +14
System.Web.Mvc.Async.WrappedAsyncResultBase_8_1.Ca llBeginDelegate(обратный вызов AsyncCallback, состояние обратного вызова объекта) +30
System.Web.Mvc.Async.WrappedAsyncResultBase_9_1.CallBeginDelegate(обратный вызов AsyncCallback, состояние обратного вызова объекта) +20
System.Web.Mvc.Async.WrappedAsyncResultBase_10_1.CallBeginDelegate(обратный вызов AsyncCallback , Object callbackState) +30
System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(обратный вызов AsyncCallback, состояние объекта, время ожидания Int32) +128
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, Обратный вызов AsyncCallback, состояние объекта) +384
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, обратный вызов AsyncCallback, состояние объекта) +48
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest (Контекст HttpContext, AsyncCallback cb, Object extraData) +16
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +103 System.Web.HttpApplication.ExecuteStep(шаг IExecutionStep, Boolean& c выполнено синхронно) +155

Server=[servername];Port=[port];User Id=[username];Password=[password];Database=[databasename];sslmode=Require;Trust Server Certificate=true
person Long Pham    schedule 20.07.2016