问题描述
在尝试使用 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();
...
}
- 重新构建您的项目并检查它是否有效
P/S:实际上是在 their github website,但不是每个人都知道,所以我就留在这里