应用补丁后SSRS Report Manager报Http 500:重复mscorlib引用问题求助
解决SSRS补丁后mscorlib重复引用导致的HTTP 500错误
碰到过好几起类似的SSRS补丁后程序集冲突问题,给你几个经过验证的排查修复方向,按优先级来试:
1. 检查Report Manager的web.config重复引用
先找到SSRS安装目录下的ReportManager文件夹(默认路径一般是C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportManager),打开里面的web.config:
- 搜索
<assemblies>节点,看看是不是同时添加了多个mscorlib的引用(比如既有2.0版本又有4.x版本) - 如果发现重复项,删掉多余的那一行(SQL Server 2012依赖.NET 4.x,通常移除2.0的重复引用即可)
- 保存文件后重启SSRS服务,测试Report Manager是否恢复
2. 验证GAC中的mscorlib版本
以管理员身份打开命令提示符,运行gacutil -l mscorlib查看全局程序集缓存里的版本:
- 确认有没有多个2.0.0.0版本的mscorlib存在,或者版本信息异常
- 如果发现异常,重新注册正确版本:运行
gacutil -i "C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll"(32位)或Framework64下的对应文件(64位系统),之后重启服务
3. 修复SSRS安装
补丁安装偶尔会损坏SSRS的文件或配置,试试修复:
- 打开控制面板→程序和功能,找到Microsoft SQL Server 2012,右键选“更改”
- 在安装向导里选择“修复”,跟着提示走完流程
- 修复完成后重启SSRS服务,再检查Report Manager状态
4. 排查.NET Framework兼容性
SQL Server 2012依赖.NET Framework 4.x,补丁可能影响了.NET的配置:
- 检查服务器上的.NET Framework 4.x是否完整,有没有缺失的更新
- 运行.NET Framework修复工具(本地下载运行即可)修复可能的损坏
- 修复后重启服务器,再测试SSRS
5. 回滚最近的补丁(最后手段)
如果以上方法都没用,说明补丁和当前SSRS版本存在兼容性问题:
- 打开控制面板→程序和功能→查看已安装的更新
- 找到最近安装的SQL Server或Windows补丁,右键卸载
- 卸载完成后重启服务器,确认SSRS是否恢复正常
附你提供的错误日志(方便后续排查参考)
appdomainmanager!DefaultDomain!532c!01/19/2018-09:52:54:: e ERROR: AppDomain ReportManager_MSSQLSERVER_0 failed to start. Error: (0): error CS1703: An assembly with the same identity 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' has already been imported. Try removing one of the duplicate references. library!DefaultDomain!532c!01/19/2018-09:52:54:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerHttpRuntimeInternalException: Failed to create HTTP Runtime, Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerHttpRuntimeInternalException: An internal or system error occurred in the HTTP Runtime object for application domain ReportManager_MSSQLSERVER_0. ---> System.Web.HttpCompileException: (0): error CS1703: An assembly with the same identity 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' has already been imported. Try removing one of the duplicate references. at System.Web.Compilation.AssemblyBuilder.Compile() at System.Web.Compilation.BuildProvidersCompiler.PerformBuild() at System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp) at System.Web.Compilation.BuildManager.CompileGlobalAsax() at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() at System.Web.Compilation.BuildManager.CallAppInitializeMethod() at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters) at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters) at System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters) at System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters) at System.Web.Hosting.ApplicationManager.GetAppDomainWithHostingEnvironment(String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters) at System.Web.Hosting.ApplicationManager.CreateObjectInternal(String appId, Type type, IApplicationHost appHost, Boolean failIfExists, HostingEnvironmentParameters hostingParameters) at System.Web.Hosting.ApplicationManager.CreateObject(String appId, Type type, String virtualPath, String physicalPath, Boolean failIfExists, Boolean throwOnError) at ReportingServicesHttpRuntime.RsHttpRuntime.Create(RsAppDomainType type, String vdir, String pdir, Int32& domainId) --- End of inner exception stack trace --- ; appdomainmanager!ReportManager_0-8!532c!01/19/2018-09:52:54:: i INFO: Appdomain:10 ReportManager_MSSQLSERVER_0-8-131608291715600412 unloading library!DefaultDomain!532c!01/19/2018-09:52:54:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerAppDomainManagerException: Failed to create Report Server HTTP Runtime, Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerAppDomainManagerException: An error occurred when attempting to start the application domain ReportManager within the Report Server service. ---> Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerHttpRuntimeInternalException: An internal or system error occurred in the HTTP Runtime object for application domain ReportManager_MSSQLSERVER_0. ---> System.Web.HttpCompileException: (0): error CS1703: An assembly with the same identity 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' has already been imported. Try removing one of the duplicate references. --- End of inner exception stack trace --- ; rshost!rshost!532c!01/19/2018-09:52:54:: e ERROR: Failed to create HttpRuntime 80131500. rshost!rshost!532c!01/19/2018-09:52:54:: e ERROR: Failed to get appdomain 80131500, pipeline=0x00000006483F3C20. rshost!rshost!532c!01/19/2018-09:52:54:: e ERROR: Error state. Internal abort for pipeline=0x00000006483F3C20 ... appdomainmanager!DefaultDomain!5090!01/19/2018-09:53:09:: i INFO: Appdomain:10 ReportManager_MSSQLSERVER_0-8-131608291715600412 unregistered.
内容的提问来源于stack exchange,提问作者PieF
相关产品推荐
相关产品推荐

