【问题标题】:Azure Cloud Services deployment error: "The instance of SQL Server you attempted to connect to does not support encryption. "Azure 云服务部署错误:“您尝试连接的 SQL Server 实例不支持加密。”
【发布时间】:2012-08-31 05:35:02
【问题描述】:

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

总而言之,以下是该网站适用和不适用的平台:

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

"How to: Connect to Windows Azure SQL Database Using ADO.NET" 指出错误“您尝试连接的 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 拥有对象)在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection 拥有连接)在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection 外部连接,DbConnectionFactory 连接工厂)在 System.Data.SqlClient.SqlConnection.Open() 在 YoureOnTime.Data.RetryConnectionStringProvider.c_DisplayClass2.b_0() 在 YoureOnTime.Common.Retry.RequestWithRetry(RetryPolicy retryPolicy, 行动行动)在 YoureOnTime.Data.RetryConnectionStringProvider.GetConnection() 在 NHibernate.Tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.Prepare() 在 NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(方言 方言,IConnectionHelper connectionHelper) 在 NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory 会话工厂)在 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>

有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc-3 nhibernate azure azure-sql-database


    【解决方案1】:

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

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

    【讨论】:

    • 不幸的是,在我的情况下,错误并没有消失。我有重试逻辑,但仍然失败。如前所述,如果我只是发布到“Azure 网站”,一切正常。但是如果我发布到“Azure 云服务”,数据库连接就会断开。
    猜你喜欢
    • 2012-09-05
    • 2018-08-29
    • 2013-09-12
    • 2023-01-17
    • 2014-12-15
    • 1970-01-01
    • 2012-08-17
    • 2014-12-13
    • 1970-01-01
    相关资源
    最近更新 更多