1

我们有一个 ASP.NET MVC 3 网站,它在部署到 Azure 云服务后无法正常工作。在开发过程中,我们一直在使用 Azure 网站平台对其进行测试,但为了获得对我们自定义域的 SSL 支持,我们现在正尝试将其部署到云服务中的 Web 角色。但是该站点与 SQL Azure 的数据库连接不起作用,而是我们得到:“您尝试连接的 SQL Server 实例不支持加密。” 重试连接不起作用,该错误消息仍然存在。

总而言之,以下是网站工作的平台和不工作的平台:

  • Azure 模拟器:工作
  • Azure 网站:工作
  • Azure 云服务(Web 角色):不起作用

如何:使用 ADO.NET 连接到 Windows Azure SQL 数据库”指出错误“您尝试连接的 SQL Server 实例不支持加密”。“表示登录过程中的失败,而不是加密失败。从 .NET 4.5 开始,ADO.NET 会显示更好的错误消息。” Azure 云服务仅限于 .NET 4.0。

该站点正在使用 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.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 在 System.Data。YoureOnTime.Data.RetryConnectionStringProvider .<>c_DisplayClass2.b 处的 SqlClient.SqlConnection.Open()_0() 在 YoureOnTime.Common.Retry.RequestWithRetry(RetryPolicy retryPolicy, Action action) 在 YoureOnTime.Data.RetryConnectionStringProvider.GetConnection() 在 NHibernate.Tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.Prepare() 在 NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords (方言方言,IConnectionHelper connectionHelper) 在 NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory sessionFactory) 在 NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners) 在 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>

有任何想法吗?

4

1 回答 1

0

根据我以前看到此错误的经验,这是间歇性发生的。SQL 数据库始终强制执行加密,如果在登录过程的早期阶段(身份验证之前)出现故障,协议库(客户端)将回退到此错误消息。正如您所提到的,这是一条误导性消息,与加密无关。

本文描述了完全相同的错误,并解释了如何通过添加重试逻辑来解决问题。因此,如果您修改代码以使用重试逻辑,在几次失败后,您可能会传递此错误并继续连接。

于 2012-08-31T16:46:41.673 回答