System.Runtime.InteropServices.COMException:Crystal Report中的文件名无效

时间:2016-04-21 07:08:53

标签: c# crystal-reports

我正在使用Visual Studio 2010 Crystal Report。它在我的本地服务器上工作正常,但在Web服务器上,它给出错误: System.Runtime.InteropServices.COMException: Invalid file name

我尝试了许多解决方案,例如将.rpt文件放在任何文件夹中并提供该路径,给予windows temp文件夹完全权限,启用父路径表单IIS等。

但他们都没有工作。请帮我解决这个问题。

我当前的路径:

crystalReport.Load(Server.MapPath("~/PurchaseOrder1.rpt"));


Crystal Report error

3 个答案:

答案 0 :(得分:2)

不是一个完整的答案,但我太新了,只是评论。您可以尝试的一件事是下载Process Monitor并观察Crystal尝试加载文件的位置,这可能有所帮助。 Process Monitor将提供大量输出,但可以对其进行过滤,例如,文件名的一部分。它可能会告诉您是否存在权限问题。我觉得这对于你无法解决为什么找不到文件的情况非常有用。

答案 1 :(得分:0)

我的猜测是罪魁祸首可能是Web服务器路径上的尾随/

尝试使用Path.Combine(Server.MapPath("~"), "PurchaseOrder1.rpt");

这应该在路径中放置适当的/,并可能解决您的问题。

答案 2 :(得分:0)

我认为与本地和服务器环境的主要区别在于IIS根目录和应用程序所在的虚拟目录。

我的意思是,如果文件位于网站的根目录中,您可能需要使用

crystalReport.Load(Server.MapPath("/PurchaseOrder1.rpt"));

或者您可以尝试将rpt文件放入ViewPurchaseOrder.aspx的同一文件夹中而不更改代码

如果它不起作用,如果你可以共享路径(物理和虚拟),我们可以进一步检查。

*编辑:使用Server.MapPath

/返回网站根目录

~/返回应用程序的根目录

不同之处在于,如果您的网站是:

http://yoursite.com 并且您有wwwroot\somedir\app

上的应用程序

所以在你的" app" (http://yoursite.com/somedir/app

/应该返回网站的根目录(http://yoursite.com

〜/应该返回应用程序的根目录(http://yoursite.com/somedir/