Sharepoint 2010 更新SPSolution后出现SharePoint 404错误
我在更新SharePoint 2010解决方案后出现404错误,我不知道原因。 我已经分析了日志文件,更新过程成功,所有更改的文件都已被替换、添加或删除。日志显示更新也已成功。通过浏览器打开SiteCollection后,将显示404错误,无法访问SiteCollection 我在解决方案中做了哪些更改: 添加了两个元素文件Sharepoint 2010 更新SPSolution后出现SharePoint 404错误,sharepoint-2010,Sharepoint 2010,我在更新SharePoint 2010解决方案后出现404错误,我不知道原因。 我已经分析了日志文件,更新过程成功,所有更改的文件都已被替换、添加或删除。日志显示更新也已成功。通过浏览器打开SiteCollection后,将显示404错误,无法访问SiteCollection 我在解决方案中做了哪些更改: 添加了两个元素文件 删除了未使用的空功能 删除了过时的自定义母版页 添加了自定义用户控件 WebConfig已成功更新,并在SafeControls中包含具有正确值的程序集 这个部署的解决
- 删除了未使用的空功能
- 删除了过时的自定义母版页
- 添加了自定义用户控件
希望有人曾经遇到过这个问题,并且知道如何处理它。我得到了解决方案,我想与大家分享。我认为这是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()