2012-01-20 33 views
2

我在ASP.NET C#中有以下代碼,並且在本地系統+生產機器中工作正常,當我在調試模式下進行測試時。但是當我上傳到IIS時它不起作用。Process.Startinfo打印PDF不能在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管理服務>登錄選項卡>選中以與桌面交互。重置IIS管理和IIS。
  2. 打印機屬性>安全性> Grand ASPNET,NETWORK SERVICE,每個人都可以完全訪問。
  3. 試圖將另一臺打印機設置爲默認打印機。重新安裝/添加打印機。

我試過上述所有都沒有成功。最後我在我的machine.config下面試過。

  1. WINNT> Microsoft.NET>框架> v2.52something>配置> machine.config中

我取代此

中processModel AUTOCONFIG = 「真」

與此

中processModel的userName =「SYSTEM」密碼=「自動生成」

和我得到這個消息

「之前,你可以進行打印相關的任務,你需要安裝一個 打印機」

我使用的是acrobat 7,我可以從打印機本身和acrobat軟件打印測試頁。

回答

0

如果您的機器上安裝了acrobat,則可以使用Verb。並將打印機名稱作爲參數

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 .. Windows必須檢測.pdf擴展名爲acrobat讀者與它相關.. –

+0

是的,我已經安裝在生產機器。實際上,我已經設法使用我在問題中發佈的舊代碼在生產機器中進行打印。幫助 –

+0

嘗試使用「打印」動詞而不是「PrintTo」 –

0

問題可能在於,IIS以不同於普通用戶的權限運行的不同用戶運行。請參閱System.Diagnostics.Process.Start not work from an IIS

我通過將ProcessModel Identity更改爲具有權限的用戶將其修復到我的服務器上。可能是一個解決方法和不好的做法,但它的工作。 {應用程序池} - >高級設置 - >身份 - >自定義帳戶(同時切換加載用戶配置文件爲真)

相關問題