为什么Crystal Reports在IIS7中抛出LoadSaveReportException,但在Cassini/桌面应用程序中有效?

为什么Crystal Reports在IIS7中抛出LoadSaveReportException,但在Cassini/桌面应用程序中有效?,iis,iis-7,crystal-reports,Iis,Iis 7,Crystal Reports,我有一个方法,加载Crystal Reports文件,设置适当的登录信息,然后生成PDF ReportDocument rep = new ReportDocument(); rep.Load(...); // Set table LogOnInfo rep.ExportToStream(ExportFormatType.PortableDocFormat); // Save the PDF to disk or return it as web request 这段代码在两种情况下都适

我有一个方法,加载Crystal Reports文件,设置适当的登录信息,然后生成PDF

ReportDocument rep = new ReportDocument();
rep.Load(...);

// Set table LogOnInfo

rep.ExportToStream(ExportFormatType.PortableDocFormat);

// Save the PDF to disk or return it as web request
这段代码在两种情况下都适用

  • 一个独立的WPF桌面应用程序
  • 通过Cassini运行的ASP.NET MVC网站由VS启动
  • 但当同一网站部署到IIS7时不起作用。它给出了一个毫无帮助的消息和跟踪

    尝试加载Crystal Reports运行时时出错

    Crystal Reports注册表 密钥权限不足或无效 Crystal Reports运行时不可用 安装正确

    请安装合适的水晶 可再发行的报告 (CRRedist*.msi)包含 Crystal Reports运行时的版本 (x86、x64或安腾)即 必修的。请到 了解更多信息

    异常详细信息:CrystalDecisions.CrystalReports.Engine.LoadSaveReportException:尝试加载Crystal Reports运行时时出错

    请注意,我使用的是CR 2008 SP2,文件从10.5开始就没有命名为
    CRRedist…
    ,因此有人忘记了在某处更新消息:)

    那么,为什么在上面列出的两种情况下运行引用相同程序集的相同代码可以工作,而在部署的网站中却不能工作呢

    我发现授予IIS用户对临时文件夹的写访问权,Crystal运行时似乎在那里做了一些工作,但即使在授予
    IIS\u IUSR
    IIS AppPool\DefaultAppPool
    %temp%
    的完全访问权后,我仍然会收到相同的错误


    我还尝试将应用程序池更改为使用我的帐户作为身份,但仍然收到相同的错误消息,因此我不认为这是权限问题。

    结果表明,对于10.5之后的任何较新版本的Crystal Reports(与VS2008捆绑的版本),都没有64位运行时

    “简单”的解决方案是将应用程序池设置为32位,然后一切正常


    还有更多的解释(以及预期的愤怒反应)

    您必须安装CR版本13,下载msm并使用VSS构建安装程序。最后在服务器上执行安装程序(您构建的)


    祝你好运

    我知道这是几年后的事了,但我现在正努力解决这个问题,试图让在Windows 2003 R2服务器(64位)上运行良好的ASP.NET 2.0应用程序现在在Windows 2008 R2服务器上运行。我想知道的是如何使应用程序池成为32位?@Rod For IIS 6请尝试“cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64”或“cscript%SystemDrive%\inetpub\AdminScripts\adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 1”