2010-05-07 2 views
0

템플릿에서 Excel 파일을 생성하고이를 바이트 배열로 클라이언트에 다시 제공하는 WCF 서비스가 있습니다. 우리는이 작업을 수행하려고 할 때 어떤 이유로, 우리는 오류를 얻고있다 :"프린터가 설치되어 있지 않습니다." WCF 서비스를 통해 2003 년 interop sheet.PageSetup을 사용할 때의 문제

No printers are installed. To install a printer: 
In Microsoft Windows 2000, click Start, point to Settings, and then click Printers. Double-click Add Printer. 
In Microsoft Windows XP, click Start, and then click Printers and Faxes. Under Printer Tasks, click Add a printer. 
Follow the instructions in the wizard. 

서비스가 LocalSystem 계정으로 실행 :

sheet.PageSetup.CenterHeader = sheet.PageSetup.CenterHeader.Replace("[customerName]", customerName).Replace("[dateTime]", date.ToShortDateString()); 

그것을이 줄을 명중 할 때, 우리는이 오류 메시지가 표시됩니다. 우리가이 서비스를 처음 배포했을 때, x64 머신에 있었고 똑같은 문제가있었습니다. 우리의 dev 환경이 x86이기 때문에 서비스를 x86 서버로 옮겼습니다. 최근에 작업이 중단되었으며 이제이 오류 메시지가 다시 표시됩니다. 나는 그것이 앱 서버에서 최근에 완료된 대량 윈도우 업데이트로 인한 것이라고 확신한다.

재미있는 점은 "데스크톱과의 상호 작용을 허용"하는 서비스를 변경해 보았지만 작동하지 않았지만 sysadmin이 같은 일을했을 때 한 파일 생성에 사용되었지만 지금은 작동하지 않습니다.

컴퓨터에는 도메인 계정과 로컬 계정으로 프린터가 설치되어 있습니다. 또한 다른 계정으로 서비스를 실행하려고 시도했지만 일부 SSPI 오류로 인해 서비스에 연결할 수 없습니다. 네트워크 서비스 계정을 사용해 보았지만 앱이 서비스를 전혀 볼 수 없었습니다. 각 변경 후에도 서비스가 다시 시작되었습니다.

시트 객체의 "PageSetup"부분에 대해 알고있는 것은 인쇄하지 않더라도 시트 객체의 액세스에 프린터가 설치되어 있어야한다는 것입니다. LocalSystem 계정에 프린터가 설치되어 있다고 생각하도록 컴퓨터를 속이는 방법을 알아낼 수 없었습니다.

답변

0

우리는 내 config 파일이 여전히 x64 서버 :(에서 지적했다, 문제를 파악

이 (내 지식) 64에서 작동하지 않습니다 이유에 - 오피스 2003 86이기 때문에, 올바르게 작동하려면 x86 인쇄 스풀러가 필요합니다. x64 OS에서 x86 인쇄 스풀러를 얻는 방법을 모르므로 x86 서버에 고정 시켰습니다.