FastReport aspcore 404 生产错误 /_fr 路径不可用

问题描述

在尝试使用 FastReport 将我们的 asp.net 核心应用程序部署到生产环境时,我们遇到了错误。好像在生成报表预览的时候,会创建一堆资源和文件系统链接到路径/_fr

当我们在生产环境中在 IIS 上部署应用程序时,应用程序存在于它自己的文件夹结构中:http://www.ourdomain.com/OurApp (C:\inetpub\OurApp)

应用程序的应用程序池无权访问 inetpub 下的根文件夹。在生成预览报告时,FastReport 会尝试将所有这些资源写入 C:\inetpub\_fr... 用于访问这些资源的 URL 是

http://www.ourdomain.com/_fr/resources.getResource?resourceName=magnifier.svg&contentType=image%2Fsvg%2Bxml http://www.ourdomain.com/_fr/resources.getResource?resourceName=spinner.svg&contentType=image%2Fsvg%2Bxml http://www.ourdomain.com/_fr/resources.getResource?resourceName=reload.svg&contentType=image%2Fsvg%2Bxml http://www.ourdomain.com/_fr/preview.getReport?reportId=b43add31c4b64cc0a111ded240c9b565&renderBody=yes

我们已尝试更改 ROOT_BASE_PATH,但似乎没有帮助。

如果我们直接导出为 PDF 没有问题。只是预览功能有问题。

@if (ViewBag.WebReport != null)
    {
        @await ViewBag.WebReport.Render();
    }

对此问题的任何见解都会有所帮助。我们找不到解释预览实际上应该如何工作的文档

解决方法

我认为这是权限导致的错误,首先,应用程序不应该在wwwroot下吗?您可以尝试将您的“OurApp”移动到 wwwroot 文件夹并重试。然后检查 IIS_IUSRS 是否具有 wwwroot 文件夹的权限。默认情况下,IIS 用户没有 wwwroot 文件夹的写入权限。

1.打开文件资源管理器并转到 C:/inetpub/

2.右键点击wwwroot并点击“属性”

3.转到“安全”选项卡并单击“编辑...”以编辑权限

4.查找并选择 IIS 用户。就我而言,它被称为 IIS_IUSRS ([服务器名称]\IIS_IUSRS)。

5.为所有权限选中“允许”复选框。

,

我知道那是 4 个月前,但我只是想弄清楚自己,所以我只是把它贴在这里。

1.添加 FastReport.OpenSource.Web 作为 nuget 依赖

  • 双击您的项目,然后添加这一行。
<PackageReference Include="FastReport.OpenSource.Web" Version="*" />

2.注册创业班

  • 转到 Startup.cs
  • 找到Configure的public并添加app.UseFastReport()
public void Configure(IApplicationBuilder app,IHostingEnvironment env)
{
    ...
    app.UseFastReport();
    ...
}
  1. 重新构建您的项目并检查它是否有效

P/S:实际上是在 their github website,但不是每个人都知道,所以我就留在这里