2012-04-23 2 views
4

WebApplication을 업로드했습니다. 내 응용 프로그램은 Crystal Reports 2008 sp3과 함께 VS2008에 있습니다. 병렬 plex 서버에 업로드했습니다. Bin 폴더에 Crystal Reports의 모든 Required Dll을 추가했습니다. 내 보고서 경로도 정확합니다.Crystal Report "잘못된 파일 이름입니다." 발행

내가받을 오류가 나는 오류 보고서는 루트 폴더 자체에 누워있다 .. 여기서 얻을 수 아니다

Line 41:   ReportDocument myreport = new ReportDocument(); 
Line 42:   string reportPath = Server.MapPath("~/CrystalReport.rpt"); 
Line 43:   myreport.Load(reportPath); 
Line 44: 
Line 45:   myreport.SetDataSource(ds); 


[COMException (0x800001fb): Invalid file name.] 
    CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0 
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +95 
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +356 

[CrystalReportsException: Load report failed.] 
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +418 
    CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) +895 
    CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename) +84 
    _Default.CreateReport() in d:\inetpub\vhosts\mydomain.in\subdomains\mysubdomain\httpdocs\Default.aspx.cs:43 
    _Default.Page_Load(Object sender, EventArgs e) in d:\inetpub\vhosts\mydomain.in\subdomains\mysubdomain\httpdocs\Default.aspx.cs:21 
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 
    System.Web.UI.Control.OnLoad(EventArgs e) +99 
    System.Web.UI.Control.LoadRecursive() +50 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627 

입니다. 그래서이 문제가 뭐지. 다른 폴더 aspnet_client가 있습니다. 그걸로 우리가해야 할 일이 뭐야?

답장을 기다리고 있습니다.

+0

이 특정 보고서 또는 모든 보고서에서이 오류가 발생합니까? – Deb

+0

모든 보고서 .. 나는 허가와 함께 몇 가지 문제가 있다고 생각하지만 그것을 알아낼 수 없습니다. 내 IIS에서 정상적으로 작동하고 있습니다. – Moiz

+2

보고서 서버 (네트워크 서비스)에 C : \ Windows \ Temp \ 폴더에 대한 읽기 권한이 있는지 확인하십시오. – Deb

답변

3

다음은 확인해야 할 사항입니다.

파일 이름, 경로이 잘못되었거나 CR에서 파일에 액세스 할 수 없기 때문에이 오류가 발생합니다.

경로와 파일 이름을 확인하는 경우

는 당신은/확인 네트워크 서비스읽기를 가지고 있는지 확인하여 온도 폴더 (일반적으로 C:\windows\Temp)에 권한을 작성해야합니다.

그래도 문제가 해결되지 않으면 Temp 폴더가 가득 차고 CR이 가비지를 청소하지 않는 것입니다. 이 다음 사건을 경우

당신은 당신이 정당하게 리포트 개체를 폐기하고 정리합니다 GC을 요구하고 있는지 확인해야합니다.

CR이 예기치 않게 작동합니다. 나는 당신이 ReportDocument 객체를 처분하고 GC.Collect()이 계속되는 경우에도 .rpt 파일이 Temp 폴더에 아직 정리되어 있지 않다는 것을 어려운 방법으로 알게되었습니다. 그리고 아니오에 한계가 있습니다. Temp 폴더에 .rpt 파일을 저장 한 후 CR에서 추가 보고서 요청을 중지합니다.

이상한 일은 기능 또는 이벤트 처리기에 ReportDocument 개체를 선언 할 때 이상하게 발생합니다. 그러나 페이지의 전체 범위가 인 ReportDocument를 선언하면 Dispose 메서드를 호출 할 때 crystal.reppt 파일이 행복하게 정리됩니다 !!

문제를 해결하는 데 도움이 될 것으로 기대합니다.

+0

답장을 보내 주셔서 감사합니다.하지만 내 웹 사이트를 호스팅 한 서버에서이 문제가 발생했습니다. 그래서 어떻게 서버의 임시 폴더를 지울 수 있습니까? – Moiz

13

같은 문제가 꽤 오래 동안 나를 괴롭 히고있었습니다. 지금은 대답 :

고토 c:\windows\temp 폴더를 발견하고에 미치는 properties->security 새로운 사용자 "IIS_IUSRS"를 추가하고 그것을 전체 읽기/쓰기 기능을 제공합니다.

그것은 나를 위해 문제를 해결했습니다.

은 너무 당신을 위해 않습니다 희망 :) 또한 확인

+1

고마워요. 이 오류를 파악하려고 미친 듯이 갔다 !!! – Arm0geddon

+0

제어판을 통해 어떻게해야하나요? –

+0

나는이 솔루션이 우리의 수정 보고서 문제로 많은 도움을 주었다고 생각한다. 더 많은 머리를 긁적 많이 저장 :) 감사합니다! –

0

뭔가 모든 적절한 IIS 역할 서비스가 서버에 추가 한 것입니다. 우리는 새로 설치 한 프로덕션 서버에서이 같은 문제를 포착했지만 현지 개발 환경에서는 그렇지 않았습니다.IIS가 서버 역할로 추가되었지만 ASP.NET & 서버 측 포함이 역할 서비스로 추가되지 않았으므로 &이므로 Crystal Report Viewer에서 아무런 보고서도 렌더링하지 않았습니다.

Windows Server 2008을 실행하는 경우 서버 관리자 도구를 통해 이러한 역할을 & 역할 서비스를 관리 할 수 ​​있습니다.