Sharepoint 2010 更新SPSolution后出现SharePoint 404错误

Sharepoint 2010 更新SPSolution后出现SharePoint 404错误,sharepoint-2010,Sharepoint 2010,我在更新SharePoint 2010解决方案后出现404错误,我不知道原因。 我已经分析了日志文件,更新过程成功,所有更改的文件都已被替换、添加或删除。日志显示更新也已成功。通过浏览器打开SiteCollection后,将显示404错误,无法访问SiteCollection 我在解决方案中做了哪些更改: 添加了两个元素文件 删除了未使用的空功能 删除了过时的自定义母版页 添加了自定义用户控件 WebConfig已成功更新,并在SafeControls中包含具有正确值的程序集 这个部署的解决

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

我在解决方案中做了哪些更改:

添加了两个元素文件

  • 删除了未使用的空功能
  • 删除了过时的自定义母版页
  • 添加了自定义用户控件
WebConfig已成功更新,并在SafeControls中包含具有正确值的程序集

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

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

我也和提琴手核对过了。上面说没有档案。我肯定也做过多次IIS重置

我可以使用更新的解决方案创建新网站集。最后要添加的是:ListDefinitions和ContentType没有任何更改。仅对ONET.xml进行了一些更改(从站点定义中删除自定义母版页)


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

我得到了解决方案,我想与大家分享。我认为这是SharePoint 2010中的一个缺陷,没有很好的文档记录。。甚至没有记录

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

但那是谎言。在我们执行更新的那一刻,分配给该特定网站集的母版页消失了,并且在初始化期间发生了一个null异常,该异常未被记录。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。因此,更新后的脚本如下:

Delte旧定制母版页
[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()