You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NGINX proxy_pass代理IIS 10服务器时Report Viewer配置错误

问题解决:ReportView控件代理后报错及CSS加载失败

一、Report Viewer Handler未注册错误解决

1. 确认Web.config的Handler配置

确保WebForm项目的web.config中已正确注册ReportViewer的HTTP Handler,根据IIS版本添加对应配置:

针对IIS经典模式(system.web节点)

<system.web>
  <httpHandlers>
    <!-- 版本号需与项目引用的ReportViewer版本一致,例如15.0.0.0 -->
    <add verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  </httpHandlers>
</system.web>

针对IIS7+集成模式(system.webServer节点)

<system.webServer>
  <handlers>
    <!-- 版本号需与项目引用的ReportViewer版本一致 -->
    <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  </handlers>
</system.webServer>

2. 调整Nginx代理配置

确保Nginx正确转发所有请求(包括.axd这类特殊路径),并保留必要的请求头,避免IIS无法识别请求:

location /webform/ { # 替换为你的WebForm站点代理路径
    proxy_pass http://[IIS服务器IP或域名]/webform/; # 替换为IIS上WebForm站点的实际地址
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass_request_headers on; # 确保请求头完整传递
}

注意:若Nginx上同时托管.NET Core站点,需确保代理规则区分开两个站点的路径,避免WebForm的请求被误导向.NET Core应用。

3. 验证依赖文件

确认IIS站点的bin目录下存在ReportViewer的核心依赖文件:

  • Microsoft.ReportViewer.WebForms.dll
  • Microsoft.ReportViewer.Common.dll
  • 对应版本的本地化资源文件(如Microsoft.ReportViewer.WebForms.resources.dll,若需要)

二、CSS文件无法加载解决

1. 修正静态资源路径

WebForm页面中CSS的相对路径在代理场景下可能解析错误,可通过以下方式修复:

方式一:添加Base标签

在页面的<head>节点中添加base标签,指定WebForm站点的代理根路径:

<head runat="server">
    <base href="http://[Nginx域名]/webform/" />
    <!-- 其他页面内容 -->
</head>

方式二:使用ResolveUrl方法生成绝对路径

将CSS引用改为动态生成的绝对路径:

<link href='<%= ResolveUrl("~/styles/your-style.css") %>' rel="stylesheet" type="text/css" />

2. 调整Nginx静态资源转发规则

确保Nginx不会拦截WebForm的静态资源请求,将对应路径的请求转发至IIS,而非当作.NET Core站点的静态资源处理(需与代理规则匹配)。

内容的提问来源于stack exchange,提问作者Charlie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:43:15