将Umbraco部署到SQL Azure

将Umbraco部署到SQL Azure,azure,umbraco,azure-sql-database,Azure,Umbraco,Azure Sql Database,我已成功地在Windows Azure网站和SQL Azure上实施了Umbraco 4.7,但有时会出现类似于此的错误: SQL helper exception in ExecuteScalar ---> System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, erro

我已成功地在Windows Azure网站和SQL Azure上实施了Umbraco 4.7,但有时会出现类似于此的错误:

SQL helper exception in ExecuteScalar ---> System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.) ---> 

Umbraco似乎不管理重试逻辑(sql azure瞬时故障处理)。有人知道有什么非创伤性的方法可以在umbraco端实现这一点吗?

Amhed,没有简单的方法可以做到这一点,在Azure中使用umbraco的人通常会遇到导致连接问题的会话状态问题,但正如您所说,您只发现了1%,这意味着您遇到了暂时性错误。你可能已经看到了这里的讨论

最终的效果是,您必须使用umbraco代码库,并在其中使用重试框架重新构建它。这会给使用Umbraco和将来发布带来严重的开销。您最好游说Umbraco核心团队建立一个完整的重试框架并予以支持。(我们甚至不要谈论安全问题;)

这可能不是您想要听到的,但实际上是您自己的数据层时间

说完我就去看了一眼:;)(因为这确实让我对其他东西感兴趣)

但从他们使用的Umbraco中的源代码来看,这是一个起点

Microsoft.ApplicationBlocks.Data

作为建立连接和执行SQL命令的基础

查看umbraco.DataLayer.SqlHelpers.SqlServer.SqlServerHelper

使用SH=Microsoft.ApplicationBlocks.Data.SqlHelper

所以我猜你需要更换这个块。在你得到的互联网上快速(肮脏)搜索

不过,你可以反思一下全班的情况,以确定是否正确

然后,您可以使用一个瞬态故障处理框架进行重建,然后您可以有效地降低更改dll(著名的最后一句话)的可能性

但你至少可以

使用(ReliableSqlConnection conn=新的ReliableSqlConnection(connString,retryPolicy))

很容易上那种类型的课,还有更可爱的东西

如果我要这样做,我会从这里开始,我会进入那个层次

我不确定这是否会覆盖100%的连接集,因为我没有在umbraco代码库中积极工作,所以这是最好的猜测,但从源代码看,这是我将开始和更改的,看起来是您最好的起点

嗯,


James

Amhed,要做到这一点并不容易,在Azure中使用Umbraco的人通常会遇到导致连接问题的会话状态问题,但正如您所说,您只捕获了1%,这意味着您正在接收暂时性错误。你可能已经看到了这里的讨论

最终的效果是,您必须使用umbraco代码库,并在其中使用重试框架重新构建它。这会给使用Umbraco和将来发布带来严重的开销。您最好游说Umbraco核心团队建立一个完整的重试框架并予以支持。(我们甚至不要谈论安全问题;)

这可能不是您想要听到的,但实际上是您自己的数据层时间

说完我就去看了一眼:;)(因为这确实让我对其他东西感兴趣)

但从他们使用的Umbraco中的源代码来看,这是一个起点

Microsoft.ApplicationBlocks.Data

作为建立连接和执行SQL命令的基础

查看umbraco.DataLayer.SqlHelpers.SqlServer.SqlServerHelper

使用SH=Microsoft.ApplicationBlocks.Data.SqlHelper

所以我猜你需要更换这个块。在你得到的互联网上快速(肮脏)搜索

不过,你可以反思一下全班的情况,以确定是否正确

然后,您可以使用一个瞬态故障处理框架进行重建,然后您可以有效地降低更改dll(著名的最后一句话)的可能性

但你至少可以

使用(ReliableSqlConnection conn=新的ReliableSqlConnection(connString,retryPolicy))

很容易上那种类型的课,还有更可爱的东西

如果我要这样做,我会从这里开始,我会进入那个层次

我不确定这是否会覆盖100%的连接集,因为我没有在umbraco代码库中积极工作,所以这是最好的猜测,但从源代码看,这是我将开始和更改的,看起来是您最好的起点

嗯,


James

请使用SQLAzure迁移向导工具将数据库从您的服务器迁移到azure服务器,然后在您的umbraco的webconfig中更改连接字符串和应用设置(key=UmbracoDSN)。我已经这样做了,我的站点工作正常。只有大约1%的时间我会遇到这样的错误。这是因为SQL连接限制,服务设计为以这种方式工作,并且必须在数据访问层上实现重试逻辑,以便在第一个失败时重试。Hello。我过去也犯过同样的错误。我启用了缓存,这减少了数据库的负载,从而修复了它。您是否尝试启用缓存以查看是否可以解决此问题?是否使用SQL sessionstate管理?或者您使用的是AppFabric缓存?它实际上使用的是InProc,因为我只有一个服务器实例在运行,所以没有更改它。请使用SQLAzure迁移向导工具将数据库从您的服务器迁移到azure服务器,然后在您的umbracoI的webconfig中更改连接字符串和应用设置(key=UmbracoDSN),我的网站运行良好。只有大约1%的时间我会遇到这样的错误。这是因为SQL连接限制,服务设计为以这种方式工作,并且必须在数据访问层上实现重试逻辑,以便在第一个失败时重试。Hello。我过去也犯过同样的错误。我启用了cac