2

我在尝试将报告导出为 PDF(或任何格式)时遇到了一些问题。

我在 Windows Server 2008 R2 机器上的 IIS 7.5 上托管了一个 asp.net MVC 3 网站。

该网站允许通过 SQL Server Reporting Services 查看报告。

这一切正常,直到我尝试删除“服务器”响应标头条目,如 删除服务器响应标头 IIS7中所述

报表在报表查看器控件中呈现良好,但是当您尝试导出报表时会引发异常,并且报表无法导出。

经过进一步调查,事实证明以下行导致自定义HTTP模块中的问题 - context.PreSendRequestHeaders += OnPreSendRequestHeaders;

namespace StrongNamespace.HttpModules
{
    public class CustomHeaderModule : IHttpModule
    { 
        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += OnPreSendRequestHeaders;
        } 

        public void Dispose() { } 

        void OnPreSendRequestHeaders(object sender, EventArgs e)
        {
            HttpContext.Current.Response.Headers.Set("Server", "Box of Bolts");
        }
    }
}

即使该方法不执行任何操作,报告也无法导出。自定义模块与报告一起工作正常,如果事件没有附加任何内容,它们导出正常。

事件或 SQL 服务器日志中似乎没有任何用处。

返回的异常是:

远程主机关闭了连接。错误代码为 0x800704CD。
\r\n \r\n 在
System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 结果,布尔 throwOnDisconnect)\r\n \r\n at
System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()\r\n \r\n 在
System.Web.HttpResponse.Flush(布尔 finalFlush)\r\n \r\n at
System.Web.HttpWriter.WriteFromStream(Byte[] data, Int32 offset, Int32 size)\r\n \r\n at
Microsoft.Reporting.WebForms.ReportDataOperation.StreamToResponse(流数据,HttpResponse 响应)\r\n \r\n at
Microsoft.Reporting.WebForms.ExportOperation.PerformOperation(NameValueCollection urlQuery, HttpResponse 响应)\r\n \r\n at
Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext 上下文)\r\n \r\n at
System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()\r\n \r\n at
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)\r\n", "ClientDetails": "{\"UserAgent\":\"Mozilla/5.0 (兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident /5.0)\",\"RawUrl\":\"/Reserved.ReportViewerWebControl.axd?ReportSession=l1lavh2yccrfzaexali5xe55&Culture=2057&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=24751adc9c9f47a387f0c486dc27fb48&OpType=Export&FileName=tp&ContentDisposition=OnlyHtmlInline&Format=PDF

Urlscan 似乎是唯一剩下的尝试选择,但我想我会看看是否有其他人遇到过类似的问题。

任何删除 Server 标头的建议或替代方法将不胜感激。

谢谢,马尔科姆

4

0 回答 0