2012-01-20 7 views
2

以下のコードをASP.NET C#で使用していますが、デバッグモードでテストしたときにローカルシステム+プロダクションマシンで正常に動作します。 IISにアップロードしても機能しません。Process.StartinfoがWindows Server 2003でASP.NETを使用していないため印刷できません

ProcessStartInfo startInfo = new ProcessStartInfo(); 
       startInfo.FileName = Server.MapPath(filePath); 
       startInfo.Verb = "print"; 
       startInfo.Arguments = "Printer Name"; 
       Process proc = new Process(); 
       proc.StartInfo = startInfo; 
       proc.Start(); 

       proc.WaitForExit(5000); 
       if (proc.HasExited == false) 
       { 
        proc.Kill(); 
       } 

私は試しました。

  1. [コントロールパネル]> [管理サービス]> [サービス]> [ログオン]> [デスクトップと対話する]をオンにします。 IIS AdminとIISをリセットします。
  2. [プリンタのプロパティ]> [セキュリティ]> [グランドASPNET]、[ネットワークサービス]、[すべてのユーザー]にフルアクセスします。
  3. 別のプリンタをデフォルトプリンタとして設定しようとしました。プリンタの再インストール/追加。

私は上記のすべてを成功させました。ようやく私はmachine.configの下で試してみました。

  1. WINNT> Microsoft.NET>フレームワーク> v2.52something>コンフィグ>のmachine.config

私はこの

のprocessModel自動構成= "true" を

を置き換えますこれをもって

のprocessModel userNameの= "SYSTEM" パスワード= "AutoGenerateは"

と "あなたは プリンタをインストールする必要があり、印刷関連のタスクを実行する前に、" 私は

このメッセージ

を取得しています

私はacrobat 7を使用しています。私は、プリンタ自体とAcrobatのソフトウェアからテストページを印刷できます。

答えて

0

あなたのマシンにacrobatがインストールされている場合は動詞を使用できます。プリンタ名を引数として渡します。

var fileName = @"c:\pdf\file.pdf"; 
      var startInfo = new ProcessStartInfo(fileName); 
      string verbToUse = "PrintTo"; 
      startInfo.Verb = verbToUse; 
      startInfo.Arguments = "PrinterName"; 
      Process p = Process.Start(startInfo); 
+0

プロダクションマシンにAcrobat Readerをインストールする必要があります。読者はそれをassocaited .. –

+0

はい私はすでにプロダクションマシンにそれをインストールしました。実際に私はすでに私の質問に投稿した古いコードを使用して、本番マシンで印刷することができました。 help –

+0

"PrintTo"の代わりに "print"動詞を使用してみてください –

0

IISは、一般的なユーザーよりも少ないアクセス許可を持つ別のユーザーで実行されることがあります。 System.Diagnostics.Process.Start not work from an IIS

ProcessModel IDを権限を持つユーザーに変更して、サーバー上で修正しました。おそらく回避策と悪い習慣が、それは働いた。 {アプリケーションプール} - >詳細設定 - >アイデンティティ - >カスタムアカウント

関連する問題