问题描述
各位大哥我在做水晶报表的时候,本地可以正确浏览水晶报表,但是发布网站后,在IIS浏览,总数提示水晶报表加载错误,详细信息如下:无效文件名。Description:Anunhandledexceptionoccurredduringtheexecutionofthecurrentwebrequest.Pleasereviewthestacktraceformoreinformationabouttheerrorandwhereitoriginatedinthecode.ExceptionDetails:System.Runtime.InteropServices.COMException:无效文件名。SourceError:Anunhandledexceptionwasgeneratedduringtheexecutionofthecurrentwebrequest.Informationregardingtheoriginandlocationoftheexceptioncanbeidentifiedusingtheexceptionstacktracebelow.StackTrace:[COMException(0x800001fb):无效文件名。]CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object&DocumentPath,Int32Options)+0CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object&DocumentPath,Int32Options)+95CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()+270[CrystalReportsException:加载报表失败。]CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()+333CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(Stringfilename,OpenReportMethodopenMethod,Int16parentJob)+876CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(Stringfilename)+84Report_PrintOrder.BindOrder()+276Report_PrintOrder.Page_Load(Objectsender,EventArgse)+36System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtrfp,Objecto,Objectt,EventArgse)+14System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Objectsender,EventArgse)+35System.Web.UI.Control.OnLoad(EventArgse)+91System.Web.UI.Control.LoadRecursive()+74System.Web.UI.Page.ProcessRequestMain(BooleanincludeStagesBeforeAsyncPoint,BooleanincludeStagesAfterAsyncPoint)+2207我的代码时这样的:TableLogOnInfologonInfo=newTableLogOnInfo();FileName=Server.MapPath("~/Report/CrystalReport.rpt");MyReport.Load(FileName);foreach(CrystalDecisions.CrystalReports.Engine.TabletbinMyReport.Database.Tables){logonInfo=tb.LogOnInfo;logonInfo.ConnectionInfo.ServerName=@".";logonInfo.ConnectionInfo.DatabaseName="dbname";logonInfo.ConnectionInfo.UserID="sa";logonInfo.ConnectionInfo.Password="123";tb.ApplyLogOnInfo(logonInfo);}//这里是取的泛型集合(有数据的)ReportAccountsReportAccounts=newglobal::ReportAccounts();List<MIST.Model.Accounts>list=newList<Accounts>();list=ReportAccounts.GetlistByCompanyId(EnterpriseId);CrystalReportSource1.ReportDocument.Load(FileName);CrystalReportSource1.ReportDocument.SetDataSource(list);CrystalReportSource1.DataBind();CrystalReportViewer1.ReportSource=CrystalReportSource1;CrystalReportViewer1.DataBind();现在我尝试了如下修改,都不行:1、把C:windowstemp设为everyone可写2、把FileName=Server.MapPath("~/Report/CrystalReport.rpt")直接改成服务器水晶报表物理路径3、服务器已安装水晶报表的文件CRforVS_13_0_2.exe
解决方案
解决方案二:
另外,我在浏览器里直接输入水晶报表的路径,如:http://www.myweb.com/Beta/report/CrystalReport.rpt提示:无法找到该页您正在搜索的页面可能已经删除、更名或暂时不可用。--------------------------------------------------------------------------------请尝试以下操作:确保浏览器的地址栏中显示的网站地址的拼写和格式正确无误。如果通过单击链接而到达了该网页,请与网站管理员联系,通知他们该链接的格式不正确。单击后退按钮尝试另一个链接。HTTP错误404-文件或目录未找到。Internet信息服务(IIS)实在不知道问题出在什么地方了,还请大家帮帮忙啊
解决方案三:
解决方案四:
大神,请问你这个问题解决了吗?是怎么解决的?我也遇到了相同的问题。求指教。。。。
解决方案五:
相对路径的问题,再有一个就是你的匹配的DLL全不全
解决方案六:
都404了证明他不存在,看这个文件是否被复制到虚拟目录下,如果没有那你可以吧做编译方式作为内容进行较新复制。然后从新生成,文件会跑到他该去目录了
解决方案七:
这是我的错误,文件路径应该是对的,我在vs上运行就没错,但是发布到iis就报这个错!!!!!无效文件名。说明:执行当前Web请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.Runtime.InteropServices.COMException:无效文件名。源错误:行43:strings=Server.MapPath("StatisticsRetentionReasonReport.rpt");行44:CrystalReportSource1.Report.FileName="StatisticsRetentionReasonReport.rpt";行45:CrystalReportSource1.ReportDocument.Load(Server.MapPath("StatisticsRetentionReasonReport.rpt"));行46://注意此处必需指明Dataset中的表的名称,否则会提示“您请求的报表需要更多信息.”行47:DataTabledt=ds.Tables["sql"];源文件:F:HospitalScienceServiceCLSOFT.WebEmergencyReportStatisticsRetentionReason.aspx.cs行:45堆栈跟踪:[COMException(0x800001fb):无效文件名。]CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object&DocumentPath,Int32Options)+0CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object&DocumentPath,Int32Options)+95CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()+270[CrystalReportsException:加载报表失败。]CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()+332CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.get_ProductLocaleID()+31CrystalDecisions.ReportSource.CachedObjectReportSource.GetReport(RequestContextcontext,BooleanbAddToCacheWhenCreated)+451CrystalDecisions.Web.CrystalReportSource.get_ReportDocument()+201CLSOFT.Web.EmergencyReport.StatisticsRetentionReason.Button_push_Click(Objectsender,StringwhereStr)inF:HospitalScienceServiceCLSOFT.WebEmergencyReportStatisticsRetentionReason.aspx.cs:45CLSOFT.Web.EmergencyReport.StatisticsRetentionReason.Page_Load(Objectsender,EventArgse)inF:HospitalScienceServiceCLSOFT.WebEmergencyReportStatisticsRetentionReason.aspx.cs:27System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtrfp,Objecto,Objectt,EventArgse)+14System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Objectsender,EventArgse)+35System.Web.UI.Control.OnLoad(EventArgse)+91System.Web.UI.Control.LoadRecursive()+74System.Web.UI.Page.ProcessRequestMain(BooleanincludeStagesBeforeAsyncPoint,BooleanincludeStagesAfterAsyncPoint)+2207
解决方案八:
解决了没?求指教
解决方案九:
晕,问题解决了吗?我也遇到了..VS调试的时候,可以完好显示报表,但是部署到IIS上的时候就出现无效文件名的错误,无效文件名?难道是IIS的错误??
解决方案十:
解决没???求指教
解决方案十一:
请问楼主,ASP.NET+MVC4Razor开发的话,用什么做报表啊?