【问题标题】:Production SqlSiteMapProvider issue - all the items 'disappeared'?生产 MYSqlSiteMapProvider 问题 - 所有项目“消失”?
【发布时间】:2009-12-21 17:08:24
【问题描述】:

我们有几个使用站点地图的 ASP.NET 应用程序,该站点地图是通过 SqlSiteMapProvider 示例的 VB.NET 实现填充的,该示例位于 Wicked Code。它被编译成一个 DLL,然后从服务器上的 GAC 以及我们的本地安装和引用。它已经在生产中运行了几个月。我还应该注意我们使用的是 SQL Server 2008

今天我们进来并注意到在生产中,对于任何应用程序,prod 的站点地图上根本没有显示任何菜单项。开发和质量检查看起来不错。在我们实现 SQLSiteMapProvider 之前很久,我们已经有很长一段时间没有在 prod 中对 SQL Server 进行任何维护了。我们最近也没有更新任何网络应用程序。

我做的第一件事是获取 prod web.config 并将其设置为我的 IDE 中的 web.config 并运行应用程序 - 仍然是同样的问题。这应该排除 IIS 问题,因为我的机器上也复制了该错误。

由于这有点紧急,我接下来要做的就是在 prod 的站点地图表中插入一个虚拟记录,看看会发生什么。噗,就像魔术一样,菜单项恢复了,一切都很好。我删除了虚拟菜单项,它同步没有问题。

不过这有点吓人,我正试图弄清楚为什么会发生这种情况,以免以后再发生。有谁之前经历过这个吗?如果您从未使用过 SqlSiteMapProvider - 它只是使用 SqlDependencyCache/ ASP.NET 缓存来存储菜单项,那么如果返回链接的存储过程的结果集发生更改,它会告诉 ASP.NET 这发生了并重新填充站点地图/缓存...

也许 Web 服务器和 SQL Server 之间的连接不知何故死了?并插入记录使其“唤醒”并再次重新连接?也许有一个超时值或某种 IsStillConnected() 函数我需要检查 PageLoad 以确保连接仍然完好?或者也许 ASP.NET 认为存储过程由于某种原因没有返回任何值,直到我们将记录插入表中?有人见过这个问题吗?

非常感谢您的任何指导。

编辑:这一切都来自于在我的存储过程中有一个 SET NOCOUNT ON。谨防!这在任何地方的 MSDN 文档中都没有,真的让我有一段时间搞砸了!

【问题讨论】:

    标签: asp.net sql-server-2008 sitemap sqldependency service-broker


    【解决方案1】:

    SqlDependency 并不完全是稳定性的强项。这里有一些文章或许能有所启发:

    【讨论】:

    • 莱姆斯,感谢您的回复。这充满了很好的信息。我完全忘记提及一件事 - 我们使用的是 SQL Server 2008。你知道这些问题是否已在 08 中得到修复/变得更可靠吗?我没有意识到 SqlDependency 正如你所说的那样“不是稳定的动力源”......这令人惊讶,因为在研究 SqlSiteMapProvider 时,它似乎非常像 SiteMap 问题的最佳解决方案,并且许多已经实施它...
    • 堆栈的查询通知方面有一些改进,我认为在我的第三个链接中导致大部分痛苦的问题已经解决。 Mosu 问题不在于查询通知,而是来自 SqlDependency 及其在 Start() 处部署的“即时”基础设施。问题并没有那么糟糕(我倾向于看到负面因素,因为我只听说过问题......)而且真的没有任何替代品。但了解它如何工作很重要,这样您就知道如何排除故障。
    • 想一想,从您的问题描述(空地图 => 然后在发生更新时填充记录)这似乎是 SiteMap 的问题,而不是 SqlDependency 的问题。如果发生相反的情况(更新不会使缓存无效),SqlDependency 将会出错,但是您所描述的听起来像是 SqlSiteMapProvider 初始化中的错误。
    • 嗯..我认为你是对的。现在的问题是,如何调试这个 =)。到目前为止,它只发生过一次,而且只是在生产中。我必须等待错误出现,然后在站点地图填充时逐步执行代码......但如果它发生在 prod 中,那么这有点冒险......所以我们可能不得不在 qa 或 dev 中重现.好痛……
    【解决方案2】:

    检查我的编辑;)

    所有这一切都来自于在我的存储过程中有一个 SET NOCOUNT ON。谨防!这在任何地方的 MSDN 文档中都没有,这真的让我很生气!

    【讨论】:

      猜你喜欢
      • 2020-09-21
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多