2016-04-21 29 views
5

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

我尝试了许多解决方案,如把.rpt文件的任何文件夹中,并提供路径,充分权限窗口的临时文件夹,启用父路径形式IIS等

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

我目前的路径:System.Runtime.InteropServices.COMException:Crystal Report中的文件名无效

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


Crystal Report error

+0

什么是使用Server.Mappath( “〜/ PurchaseOrder1.rpt”)返回?它是文件的正确位置吗?你有没有通过NTFS给IIS_IUSERS文件的访问权限? – JAZ

+0

@John,Server.MapPath是正确的,它在本地服务器上正常工作。让我检查IIS_IUSERS权限。 –

+0

即使在提供IIS_IUSERS权限后也出现同样的错误。 –

回答

2

不是全部答案,但我太新,所以只是发表评论。您可以尝试的一件事是下载Process Monitor并观察Crystal试图加载文件的位置,这可能会有所帮助。进程监视器将提供大量输出,但可以对其进行过滤,例如文件名的一部分。它可能会告诉你是否有权限问题。我发现它对于这种情况下非常有用,你不能找出为什么找不到文件。

0

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

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

试试这个应该把适当/路径和可能解决您的问题。

+0

我试过了,仍然是一样的错误。 –

0

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

我的意思是,如果该文件是在网站的根,你可能想使用

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

或者你可以尝试把RPT文件到同一文件夹ViewPurchaseOrder.aspx而无需修改代码

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

*编辑:使用服务器时。在MapPath

/返回站点根应用程序的

~/返回根目录

不同的是,如果你的网站是:

http://yoursite.com 和你有一个应用程序,对wwwroot\somedir\app

所以在你的“应用程序”(http://yoursite.com/somedir/app

/应返回网站(http://yoursite.com

〜/根应退回申请(http://yoursite.com/somedir/)的根