0

テンプレートからExcelファイルを生成し、それをバイト配列でクライアントにフィードバックするWCFサービスがあります。何らかの理由で、これを実行しようとするとエラーが発生します。

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

この行に到達すると、次のエラーメッセージが表示されます。

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アカウントで実行されます。このサービスを最初に展開したときは、x64マシンであり、同じ問題がありました。開発環境はx86であるため、サービスをx86である別のサーバーに移動し、しばらくの間正常に動作しました。最近動作を停止し、このエラーメッセージが再び表示されます。最近アプリサーバーで行われたWindowsの一括更新が原因だったと確信しています。

面白いことに、サービスを「デスクトップとの対話を許可する」に変更しようとしましたが、機能しませんでしたが、システム管理者が同じことを行った場合、1つのファイル生成で機能しましたが、現在は機能していません。

ドメインアカウントとローカルアカウントの両方で、マシンにプリンターがインストールされています。また、別のアカウントでサービスを実行しようとしましたが、SSPIエラーのためにサービスに接続できませんでした。ネットワークサービスアカウントを使用してみましたが、アプリがサービスをまったく認識できませんでした。変更のたびにサービスを再開しましたが、無駄になりました。

シートオブジェクトの「PageSetup」部分について私が知っていることは、印刷していない場合でも、それにアクセスするにはプリンターをインストールする必要があるということです。LocalSystemアカウントにプリンターがインストールされているとマシンを騙して考えさせる方法を見つけることができませんでした。

4

1 に答える 1

0

私たちは問題を理解しました.私の設定ファイルはまだx64サーバーを指していました:(

(私の知る限り) x64 で動作しない理由については、office 2003 は x86 であるため、正しく動作させるには x86 印刷スプーラーが必要です。x64 OS で x86 印刷スプーラーを取得する方法がわからないため、x86 サーバーに貼り付けただけです。

于 2010-05-07T17:00:42.530 に答える