共享主机上的Crystal报表与.Net应用程序不兼容。

4
我有一个使用Crystal Report的MVC应用程序。我使用了以下代码下载报告:
 ReportDocument rd = new ReportDocument();
 rd.Load(Path.Combine(Server.MapPath("~/Reports/" + Session["rpt"])));
 rd.SetDataSource(Session["result"]);
 Response.Buffer = false;
 Response.ClearContent();
 Response.ClearHeaders();
 //Excel
 Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.Excel);
 stream.Seek(0, SeekOrigin.Begin);
 return File(stream, "application/vnd.ms-excel", "Cheque.xls");

在本地计算机上下载报告正常。但是当我将此应用程序托管在Godaddy的共享主机上时,会出现以下屏幕:

enter image description here

错误很明显,它在某个地方缺少必需的log4net dll引用。 - Souvik Ghosh
1
@Souvik Ghosh 我已经添加了 log4net dll 引用。但是结果还是一样的。我认为问题是由于共享主机引起的。 - Abhilash Ravindran C K
我也遇到了同样的问题,在本地主机上可以正常工作,但在Godaddy共享托管中出现了上述错误。@AbhilashRavindranCK - Navneet Krishna
这是因为程序集版本不匹配。 - han
3个回答

7
Godaddy的共享主机不支持Crystal报告。不仅是Godaddy的共享主机,大多数主机提供商的共享主机也不支持Crystal报告。要使用Crystal报告,您必须购买VPS或专用服务器。
如果您想在服务器上运行Crystal报告,则始终需要该服务器上的Crystal报告运行时。GoDaddy的共享托管服务器使用默认的中等信任级别,不支持Crystal报告运行时的安装。
有用的信息:
GoDaddy的共享托管服务器使用默认的中等信任级别,并添加了OleDbPermission、OdbcPermission和较宽松的WebPermission。
在中等信任级别下运行的应用程序没有注册表访问权限,无法访问Windows事件日志,并且无法使用反射。这样的应用程序只能与定义的一定范围的网络地址通信,并且文件系统访问仅限于应用程序的虚拟目录层次结构。如果您遇到任何问题,请确保您的应用程序可以在中等信任环境中工作。
因此,人们可以将此作为共享托管权限通常类似的指示。

支持Crystal Report的共享主机之一是http://asphostportal.com。我不确定这一点。 我从其他社区得到了这个信息。


0

我已经与Godaddy共享主机进行了双重确认,截至2021年4月,他们仅支持在专用服务器或VPS上使用Crystal报表。


0

您之所以会出现这个错误,是因为log4net程序集版本不匹配。请参考此链接link


1
已经尝试添加<dependentAssembly>标签,但仍然出现相同的错误。添加此标签没有任何效果。 - Abhilash Ravindran C K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接