Ошибка развертывания облачных служб Azure: экземпляр SQL Server, к которому вы пытались подключиться, не поддерживает шифрование.

У нас есть веб-сайт ASP.NET MVC 3, который не работает после развертывания в облачных службах Azure. Во время разработки мы тестировали его с помощью платформы веб-сайтов Azure, но чтобы получить поддержку SSL для нашего личного домена, мы сейчас пытаемся развернуть его в веб-роли в облачных службах. Но соединение базы данных сайта с SQL Azure не работает, вместо этого мы получаем: «Экземпляр SQL Server, к которому вы пытались подключиться, не поддерживает шифрование». Повторная попытка подключения не работает, это сообщение об ошибке сохраняется.

Подводя итог, вот платформы, на которых сайт работает, а где нет:

  • Эмулятор Azure: Работает
  • Веб-сайты Azure: Работает
  • Облачные службы Azure (веб-роль): Не работает

«Как подключиться к базе данных Windows Azure SQL с помощью ADO.NET» указывает, что ошибка «Экземпляр SQL Server, к которому вы пытались подключиться, не поддерживает шифрование.» »указывает на сбой во время процесса входа в систему, а не на сбой шифрования. Начало в. NET 4.5, ADO.NET лучше отображает сообщение об ошибке ». Облачные службы Azure ограничены .NET 4.0.

Сайт использует NHibernate для подключения к БД. Вот ошибка из файла журнала:

Не удалось создать фабрику сеансов nhibernate. FluentNHibernate.Cfg.FluentConfigurationException: при создании SessionFactory использовалась недопустимая или неполная конфигурация. Проверьте коллекцию PotentialReasons и InnerException для получения дополнительных сведений.

  • База данных не была настроена с помощью метода базы данных. ---> System.Data.SqlClient.SqlException: экземпляр SQL Server, к которому вы пытались подключиться, не поддерживает шифрование. в System.Data.ProviderBase.DbConnectionPool.GetConnection (DbConnection owningObject) в System.Data.ProviderBase.DbConnectionFactory.GetConnection (DbConnection owningConnection) в System.Data.ProviderBase.DbConnectionClosed.OpenactionConnectionDbConnectionClosed.OpenConnection SqlClient.SqlConnection.Open () в YoureOnTime.Data.RetryConnectionStringProvider. ‹> C_ DisplayClass2.b _0 () в YoureOnTime.Common.Retry.RequestWithRetry (RetryPolicy retryPolicy, ActionTime. RetryConnectionStringProvider.GetConnection () в NHibernate.Tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.Prepare () на NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords (Dialect диалекте, IConnectionHelper connectionHelper) в NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update (ISessionFactory SessionFactory) в NHibernate .Impl.SessionFactoryImpl..ctor (Конфигурация cfg, Отображение IMapping, настройки параметров, прослушиватели событий EventListeners) в FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory () --- Конец трассировки стека внутреннего исключения ---

А вот как соединение определяется в hibernate.xml:

<property name="connection.connection_string">
      data source=database.database.windows.net;Initial Catalog=db;User ID=user;Password=password;Encrypt=true;Trusted_Connection=false;MultipleActiveResultSets=True
</property>

Любые идеи?


person Mikael Koskinen    schedule 31.08.2012    source источник


Ответы (1)


Основываясь на моем предыдущем опыте наблюдения за этой ошибкой, это временное явление. База данных SQL всегда применяет шифрование, и если на ранней стадии процесса входа в систему (до аутентификации) произойдет сбой, библиотеки протокола (на стороне клиента) вернутся к этому сообщению об ошибке. Как вы упомянули, это вводящее в заблуждение сообщение, не имеющее отношения к шифрованию.

Эта статья описал ту же ошибку и объяснил, как вы можете решить вашу проблему, добавив логику повтора. Поэтому, если вы измените свой код для использования логики повтора, после нескольких сбоев вы можете передать эту ошибку и установить соединение.

person AvkashChauhan    schedule 31.08.2012
comment
К сожалению, в моем случае ошибка никуда не делась. У меня есть логика повторной попытки, но все равно что-то не работает. Как уже упоминалось, если я просто опубликую на веб-сайтах Azure, все заработает. Но если я публикую в облачных службах Azure, соединение с базой данных разрывается. - person Mikael Koskinen; 04.09.2012