.NET Crystal Report 인쇄 인쇄 인쇄 테르맨 서비스 연결 오류에서 실행중인 세션이 연결이 끊어졌습니다.

StackOverflow https://stackoverflow.com/questions/602295

문제

보고서 요청을 받고 요청 된 보고서를 인쇄하는 앱 서버에서 실행하기 위해 .NET 응용 프로그램을 만들었습니다.

C# 응용 프로그램은 Crystal Reports를 사용하여 보고서를로드 한 후 인쇄합니다.

응용 프로그램은 특정 사용자 계정 (이전 앱에 필요한 원격 데스크탑 연결을 통해 연결된 서버에서 실행됩니다. 원격 세션에서 연결을 끊으면 응용 프로그램이 다음과 같은 예외를 제기하기 시작합니다.

메시지 : chrystalreportsexception :로드 보고서가 실패했습니다

원격 세션이 활성화 될 때는 이러한 유형의 오류가 발생하지 않습니다. 앱을 실행하는 서버가 Windows Server 2003을 실행 중입니다. 연결을 생성하는 상자는 Windows XP입니다.

나는 이것이 상당히 이상하다는 것에 감사하지만 내가 만든 응용 프로그램 배포에는 어떤 문제도 볼 수 없다.

이 문제의 원인이 무엇인지 아는 사람이 있습니까?

편집 : 총알을 물고 응용 프로그램을 Windows 서비스로 만들었습니다. 분명히 오래 걸리지 않습니다. 문제를 해결할 것이라고 확신하지 않았습니다. 어쨌든 그것은 그렇지 않다 !!!

또한 인쇄 기능을 비동기로 호출하는 멀티 스레드 코드를 제거하려고 시도했습니다. 나는 단순히 앱을 만들고 실패 할 수있는 이유를 좁히기 위해 이것을했다. 어쨌든, 이것은 상황을 개선하지 못했습니다!

편집 : 내가 얻는 두 가지 오류는 다음과 같습니다.

System.Runtime.InterOpServices.comexception (0x80000201) : 잘못된 프린터가 지정되었습니다. at at at at at at at a, reportappserver.controllers.printoutputcontrollerclass.modifyprintername.crystalreports.engine.printoptions.set_printername (string value)의 dsa.printserver.service.service.printcrystalreport (보고서).

프린터가 유효하지 않으며 60 초 후 시간이 지남에 따라 보고서가 성공적으로 인쇄되면 확인됩니다.

그리고

배경 처리에 대한 요청을 제출할 수 없습니다. chefortAldeClass.reportSourceClass.getLastPagenumb (requestContext prequestContext)에서 remportSource.EromReportSourceBase.getLastPagEnumb (reportPerequestContextRecontext) --- at at at expressOmportor trace의 stictOristOntOrcistOristOrcistOristOrcistOristOrsectorscistion. chefortAdcisions.reomreportsourcebase.getLastPagenumb (reportPageRequestContext reqContext)에서 chrystalreports.engine.comatengine.printtoprinter (int32 ncopies, boolean collated, int32 int32 intpagen)의 int32 ncopies (int32 ncopies, int32). DSA.printserver.service.service.printcrystalreport (보고서)에서 Collated, Int32 StartPagen, Int32 Endpagen)

편집하다:

액세스 문제가 있는지 확인하기 위해 Filemon을 실행했습니다. 오류가 발생하는 시점에서 파일 MON 보고서

요청 : 열기 | 경로 : c : wind 결과 : 찾을 수 없음 | 기타 : 속성 오류

도움이 되었습니까?

해결책

우리의 특별한 문제가 해결되었습니다. 기본적으로 보고서가 만들어 졌을 때 프린터에 대한 정보로 저장되었습니다. 기본적으로 특정 프린터가 보고서를 위해 설정되어 저장되었습니다.

이 프린터는 더 이상 존재하지 않으므로 보고서가 실패하기 시작한 이유입니다. 기본적으로 우리는 보고서 디자이너를 열고 보고서에서 프린터와의 연관성을 제거해야했습니다.

다른 팁

우리는 지난 몇 년 동안 이러한 오류를 여러 번 만났습니다. 여러 번 더 구체적인 오류 메시지를 원했습니다.

먼저, 여러 Crystal Reports 버전이 설치되어 있지 않은지 확인합니다. 우리는 Expereince에서 Crystal Reports 9.0이 10과 잘 어울리지 않는 것으로 나타났습니다. 버전 9는 일부 고객을 돕는 것처럼 보였습니다. 둘 다 설치되면 제거하지 않는 것이 좋습니다 둘 다, 그런 다음 결정 보고서를 다시 설치합니다.

우리의 가장 초기 Crystal 보고서 중 하나는 "배경 처리에 대한 요청을 제출할 수 없다"는 두려운 것이 었습니다. 보고서는 잠시 동안 잘 작동하고 갑자기 멈출 것입니다. 코드를 살펴본 후, 나는 우리가 보고서 문서를 처분하지 않는 곳을 찾았습니다. 이 문서를 올바르게 처리하면 문제가 해결되었습니다.

최근에, 우리는 "요청은 배경 처리를 위해 제출할 수 없다"는 스 패트를 쳤다. "잘못된 프린터"오류. 한 고객의 서버에는 IP 주소로 정의 된 여러 네트워크 프린터가 있습니다. 인쇄는 잠시 동안 잘 작동하고 갑자기 BAM, 고객은 "유효하지 않은 프린터"오류를 얻었고 우리의 지원을 불렀습니다.

동료 개발자는 다음과 같은 모든 작업을 수행하여 "유효하지 않은 프린터"문제를 해결했습니다.

  1. Visual Studio 2005에서 .rpt 파일을 편집하고 저장했습니다. 우리는 Report 형식을 Crystal Reports 9와 호환 가능하게 유지했습니다. 왜냐하면 우리는 여전히 이전 버전을 사용하는 고객에게 변경 사항을 배포 할 수 있기를 원했기 때문입니다.
  2. "프린터 없음"옵션으로 Crystal Reports 파일을 저장하십시오. Visual Studio 2005 메뉴에서 Crystal Reports/Design/Printer 설정을 선택한 다음 "프린터 없음"확인란을 선택하십시오.
  3. 우리는 다음과 같은 이상한 것으로 "M의 M"을 표시하는 공식을 변경했습니다.

"Page " + Left (CStr (PageNumber), Length (CStr (PageNumber)) - 3) +
" of " + Left (CStr (TotalPageCount), Length (CStr (TotalPageCount)) - 3)

이에:

"Page " + CStr(PageNumber,0) + " of " + CStr(TotalPageCount,0)

불행히도, 위의 작업 중 어느 것도 또는 전부가 오류를 수정할 수 있는지 전혀 모릅니다. 나는 "5 월"이라고 말합니다. 내가 아는 모든 것에 대해 일부 IT 네트워크 변경으로 인해 오류가 마술처럼 사라 졌기 때문입니다.

마지막으로 읽었습니까? 이 백서? 반드시 우리의 문제를 해결하지는 않았지만 매우 흥미로 웠습니다.

응용 프로그램을 위해 Window 서비스 래퍼를 작성하면 로그인 한 사용자에 관계없이 계속 실행됩니다. 자동으로 시작하도록 설정할 수도 있습니다. Windows 서비스가 아닌 실제 응용 프로그램을 사용하고 있기 때문에 서버에서 세션을 로그 아웃하면 실제로 실행되지 않는다고 생각합니다.

코드 프로젝트의 예는 다음과 같습니다.

http://www.codeproject.com/kb/system/windowsservice.aspx

"로그 오프"하는 대신 원격 세션을 "연결 해제 '하고 있다고 확신하십니까? 나는 세션을 NT Server 2003에 항상 분리하고 모든 것이 잘 실행됩니다. 반면에 로그 오프하면 앱을 죽일 것입니다. 그 세션에서 실행됩니다.

O/S 서버가 실행되는 것은 무엇입니까?

설명한 문제를 해결하려면 문제가 무엇인지에 집중해야합니다.

나는 메시지를 받았다 : crystaldecisions.shared.crystalreportsexception :로드 보고서는 여러 번 실패했으며 보고서에 액세스 할 수 없기 때문입니다. 존재하지 않거나 상황에서 당신은 기계에 연결되어 있지 않습니다. 오류는 인쇄와 관련된 것이 아닙니다.

Excel의 (충격-호러) 자동화 문제를 제외하고는 이와 비슷한 모호한 문제가있었습니다. 원격 데스크톱 세션이 연결되어있을 때 응용 프로그램이 잘 작동했지만 일단 연결이 끊어지면 기본 프린터와 관련된 자동화 오류가 발생합니다.

이 문제는 원격 데스크탑에 연결할 때 기본 프린터가 설정되는 방식과 관련이 있다고 생각합니다. 원격 데스크톱 세션을 시작할 .rdp 파일이 있다고 가정하면 편집하면 "로컬 리소스"탭을 선택하면 원격 세션에서 로컬 프린터를 공유하는지 여부를 확인할 수 있습니다.

활성화 된 경우 연결하면 로컬 기본 프린터가 원격 시스템의 기본 프린터가됩니다. 연결을 끊으면 응용 프로그램의 기본 프린터가 여전히 로컬 컴퓨터에서 사용할 수없는 기본 프린터를 참조 할 수 있습니다.

"로컬 리소스"탭에서 프린터 확인란을 선택 해제하여 로컬 프린터를 공유하지 않도록하여이를 해결할 수 있어야합니다.

더 쉬운 솔루션은 서버에서 "프린터 리디렉션"을 비활성화하는 것입니다. 보다 https://serverfault.com/questions/5646/how-do-i-disable-remote-printers-using-group-policy 자세한 내용은.

당신이 방법을 자세히 찾고 있다면

부울 페일드에서 크리스탈 보고서에 확인란을 추가하고 부울 필드가 거짓 인 경우

다른 점검 취소 확인란을 확인하십시오.이 기사를 확인하십시오

http://checkboxcrystalreport.blogspot.com/2009/07/printing-checkbox-in-crystal-report-for.html

After long googling i found this link but didnt try, coz of no any other free server.

http://www.microsoft.com/technet/security/bulletin/ms04-017.mspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top