1. 程式人生 > >IIS中asp.net程式後臺列印水晶報表 程式假死或印表機無反應的解決方法

IIS中asp.net程式後臺列印水晶報表 程式假死或印表機無反應的解決方法

  最近在做的幾個專案都用到了水晶報表的後臺列印,除錯的時候非常好用,無論是虛擬列印還是指定真實印表機,可一部署到IIS上就莫名其妙的卡死,或者提示了列印成功,印表機卻毫無反應。

      一開始認為是許可權的問題,把C:/windows/temp和程式所在資料夾都加上了相應許可權,甚至連部署的印表機都設定了很多許可權,還是不能解決。

     在網上找來找去,也都是一些提醒是否許可權正確,或者列印模板路徑是否正確的答案。

     後來,仔細觀察了除錯列印和IIS列印時印表機任務中的資訊,發現除錯時列印,“文件所有者”指示的是administrator,而IIS列印時其指示的是 機器名+“$” 這樣一個東西。我又觀察了一下程序中虛擬印表機的呼叫,程序中虛擬印表機的程式對應的使用者名稱在除錯時用的是administrator,而IIS列印時用的是'network service'。看到這,有點明白問題的原因了,應該是“標識”,對,就是IIS應用程式池的“標識”,其預設的是’networkservice‘ ,而我將他改成管理員也就是‘administrator’後,一切就解決了,下圖:

具體原因,我想應該是內建賬戶不允許使用本地印表機的原因吧,也希望有高人給出更明確的解釋。

這裡要提一下,修改‘標識’會引起一些安全問題,而且微軟建議我們使用內建使用者'network service',不過在對安全不是特別重視的情況下(我們這系統就只在區域網使用),實現功能還是第一位的,畢竟如果換成前臺列印在一些印表機控制和客戶環境上還需要很多設定。

 

https://www.cnblogs.com/zhaohonghao/articles/2986728.html