0

更新 SharePoint 2010 解决方案后出现 404 错误,我不知道原因。我分析了日志文件,更新过程成功,所有更改的文件都已被替换、添加或删除。日志告诉更新也成功了。通过浏览器打开站点集合后,显示 404 错误,站点集合不可访问。

我在解决方案中做了什么改变:

添加了两个元素文件

  • 删除了一个未使用的空功能
  • 删除了一个过时的自定义 MasterPage
  • 添加了自定义用户控件

WebConfig 已成功更新,它在 SafeControls 中包含程序集,并具有正确的值。

这个部署的解决方案的内容数据库似乎也很好。

SiteCollection 设置可通过 PowerShell 访问。该集合确实存在于配置中,并且所有值似乎也很好。

我也检查过 Fiddler。它说没有文件。我也确实多次进行了 IIS 重置。

使用更新的解决方案创建新网站集没有问题。最后要添加的内容:ListDefinitions、ContentTypes 没有变化。仅对 ONET.xml 进行了一些更改(从站点定义中删除自定义母版页)。

希望有人遇到过这个问题并且知道如何处理它。

4

1 回答 1

1

我得到了解决方案,我想与你分享。我认为它是 SharePoint 2010 中的一个错误,没有很好的记录..甚至没有记录。

以下场景:我们已经部署了一个带有自定义母版页的包。我们现在处于需要从包中重命名或删除母版页的情况。我们正在执行 Update-SPSolution,结果是该特定站点集合的 404 错误。当我们分析日志或任何其他部分时,我们不会得到任何错误,没有关于这个错误的信息,日志中的一切似乎都工作正常。

但那是谎言。在我们执行更新的那一刻,分配给该特定网站集的母版页消失了,并在初始化期间发生空异常,该异常不会被记录。结果是 404 错误。

我现在花了一天时间来开发修复程序。在我们继续更新之前,我们必须删除并使用不同的母版页引用解决方案。这可以通过 PowerShell 完成。例如,它可能看起来像这样:

# Delte old custom masterpage
$web = get-spweb http://development/mysite
$lib =$web.GetFolder("_catalogs/masterpage")
$file = $lib.Files["MyMaster.master"];
$file.Delete();
$web.Dispose();
# Revert Branding to SP Default
$site = Get-SPSite http://development/mysite
$site | Get-SPWeb -limit all | ForEach-Object { $_.MasterUrl = $_.ServerRelativeUrl + "/_catalogs/masterpage/v4.master";$_.Update() }
$site.Dispose()

在我们手动删除母版页后,我们可以继续进行解决方案更新,一切都会正常工作。希望这会帮助任何处于相同情况的人。

更新:我认识到有时 powershell 无法删除母版页。这是因为母版页仍在内存中。因此,我们需要清理 GC。因此这里更新的脚本:

删除旧的自定义母版页

[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
$web = get-spweb http://development/mysite
$lib =$web.GetFolder("_catalogs/masterpage")
$file = $lib.Files["MyMaster.master"];
$file.Delete();
$web.Dispose();
# Revert Branding to SP Default
$site = Get-SPSite http://development/mysite
$site | Get-SPWeb -limit all | ForEach-Object { $_.MasterUrl = $_.ServerRelativeUrl + "/_catalogs/masterpage/v4.master";$_.Update() }
$site.Dispose()
于 2012-11-27T16:06:28.747 回答