【发布时间】:2014-01-02 15:06:43
【问题描述】:
我正在使用 SQL Server Report Service 2008 将 SSRS ServerReport 渲染为 PDF 并在 ASP.NET 3.5 应用程序的 ReportViewer WebForm 控件中。
一些使用 Internet Explorer 11 的用户报告说他们无法打开生成的 PDF 文件或在查看器中查看任何内容。 渲染失败并出现此错误:
library!ReportServer_0-403!7c8!01/02/2014-11:07:37:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.InternalCatalogException: , Microsoft.ReportingServices.Diagnostics.Utilities.InternalCatalogException: Interner Fehler beim Berichtsserver. Weitere Informationen finden Sie im Fehlerprotokoll. ---> System.ArgumentNullException: Value cannot be null.
Parameter name: String
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.Web.Configuration.HttpCapabilitiesBase.get_MajorVersion()
at Microsoft.ReportingServices.Diagnostics.Utilities.BrowserDetectionUtility.GetBrowserInfoFromRequest(HttpRequest request)
at Microsoft.ReportingServices.Diagnostics.RSRequestParameters.SetBrowserCapabilities(HttpRequest request)
at Microsoft.ReportingServices.Library.RenderReportAction.SetBrowserCapabilities()
at Microsoft.ReportingServices.Library.RenderReportAction.PerformExecution()
at Microsoft.ReportingServices.Library.RenderReportAction.Render()
--- End of inner exception stack trace ---;
我可以将这些错误追溯到 IE11 的 UserAgent 中使用的 OEM 字符串。
例子:
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; MALC; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; MATM; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; NP06; rv:11.0) like Gecko
MALC、MATM 和 NP06 似乎是 OEM 字符串,不是通常的 IE11 UserAgent 的一部分。
在 IE 开发者工具用户代理设置中删除这些字符串可以使一切正常工作,但不是最终用户的解决方案。
我尝试过的事情:
- 在 ASP.NET 应用程序中覆盖传入请求的 UserAgent,但无论我设置什么,它似乎都不会改变。 (我可能做错了,我发现我无法改变它所以我还是尝试了)
- 覆盖 Global.asax 中 Begin-/EndRequest 事件的标头
- 在应用程序本身的 App_Browser 目录和 SSRS 服务器应用程序上添加自定义 .browser 文件
有什么作用:
- 拦截请求并使用具有不同 UserAgent 的 HttpWebRequest 发出自定义请求,来回复制 cookie(会话 ID)和请求/响应标头。
我觉得这是一个糟糕的解决方案,不应该这样做。
如何让 SSRS 在解析 IE11s UserAgent 时不抛出错误?
有没有办法禁用它或添加自定义正则表达式来手动解析它?
【问题讨论】:
标签: c# asp.net reporting-services ssrs-2008 internet-explorer-11