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

.NET Core 3.1部署后XtraReports样式表丢失、REPX为空报404错误

根因分析
  • .NET Core 静态文件中间件默认未注册.repx后缀及DevExpress报表相关专属资源的MIME类型
  • .repx 文件未配置正确的发布属性,发布后未同步到部署目录
  • 直接部署完整node_modules目录未做路径映射,DevExpress资源路径与项目配置的资源路由不匹配
分步解决方案

步骤1:配置静态文件中间件与MIME类型

在Startup.cs的Configure方法中,修改静态文件配置:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 其他中间件配置...
    
    var provider = new FileExtensionContentTypeProvider();
    // 注册repx文件MIME类型
    provider.Mappings[".repx"] = "text/xml";
    // 按需补充DevExpress报表相关资源后缀映射
    provider.Mappings[".css"] = "text/css";
    provider.Mappings[".js"] = "application/javascript";
    
    app.UseStaticFiles(new StaticFileOptions
    {
        ContentTypeProvider = provider
    });
    
    // 必须放在UseStaticFiles之后加载
    app.UseDevExpressControls();
    
    // 其他中间件配置...
}

同时确认ConfigureServices方法中已完成DevExpress服务注册:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDevExpressControls();
    // 其他服务注册逻辑...
}

步骤2:配置.repx文件发布属性

选中项目中所有.repx文件,右键打开属性面板,调整配置如下:

  • 生成操作:内容
  • 复制到输出目录:如果较新则复制
    配置完成后重新发布项目,手动检查部署目录下是否存在对应.repx文件。

步骤3:修正DevExpress静态资源部署方式

不要直接部署完整node_modules目录,按如下方式处理资源:

  • 若使用npm安装DevExpress报表组件,在项目的package.json中配置build脚本,将node_modules/devexpress-reporting/dist下的资源打包复制到wwwroot/dx-assets目录
  • 也可以直接开启DevExpress嵌入式资源模式,无需手动部署静态资源:在AddDevExpressControls后添加SetResourcesMappings配置,指定从程序集加载资源即可。

步骤4:配置服务器MIME规则

若使用IIS部署,在站点的web.config的system.webServer节点下添加配置:

<staticContent>
    <mimeMap fileExtension=".repx" mimeType="text/xml" />
</staticContent>

若使用Nginx部署,在站点配置的http -> server -> location / 节点下添加:

types {
    text/xml repx;
}

错误截图参考

错误截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:54:02