從伺服器列印以 Web 為基礎的報表

如果使用者無法存取列印匯出之報表所需的應用程式,您可能需要讓使用者可以從伺服器列印報表。在伺服器端進行列印時,報表會在 Web 伺服器上產生,然後列印至安裝在 Web 伺服器的印表機。使用者可以選擇靠近自己位置的印表機,然後讓伺服器處理列印工作。

伺服器端列印的需求如下:

  • 印表機必須安裝在 Web 伺服器
  • 本機 SYSTEM 帳戶具有印表機的存取權
  • 必須編輯包含 .NET Framework 組態設定的 Machine.config 檔,以便讓 ASPNET 背景工作處理序可以存取伺服器上的系統設定

注意   實作伺服器端列印時,會牽涉到變更伺服器預設權限的工作,不建議用於公開在 Internet 上的應用程式。

如果要設定伺服器端列印,您必須確保執行 ASP.NET 的處理序具有足夠的權限可以存取網路印表機。根據預設,ASP.NET 會以本機「電腦」帳戶 (ASPNET 背景工作處理序的 ASPNET 帳戶) 的權限執行。為了能夠經由 IIS (Internet Information Services) 進行網路列印,Framework 應該在本機系統 帳戶下執行。

設定伺服器端列印

  1. 存取 Machine.config 檔,其預設位置如下:

    C:\WINNT\Microsoft.NET\Framework\<VersionNumber>\CONFIG\

    <VersionNumber> 是安裝在電腦上的 .NET Framework 的版本。帳戶設定是位於這個檔案的 <ProcessModel> 標記內。帳戶的預設值是:userName="machine" password="AutoGenerate"

  2. 請編輯 Machine.config 檔中的組態設定。將預設值變更為:

    userName="SYSTEM" password="AutoGenerate"
    
  3. 儲存檔案。

    現在就能夠將伺服器上的列印權限賦與本機 SYSTEM 帳戶。

  4. 如果印表機是網路印表機,請將此網路印表機公開給本機 SYSTEM 帳戶。

    當印表機安裝在電腦上時,這個印表機的設定會儲存在登錄中;而登錄是位於 HKEY_CURRENT_USER 登錄群組 (登錄檔) 之下。IIS 處理序永遠不會使用這個登錄群組,因為它一定是在本機系統帳戶的內容下執行,並且無法以「目前使用者」的身份登入伺服器。根據預設,SYSTEM 帳戶在登錄中並沒有設定任何印表機。有兩篇 Microsoft Knowledge Base 文件,Q152451 和 Q184291 會說明如何將印表機設定公開給 System 帳戶。這兩篇文件都會要求您編輯 Web 伺服器上的登錄,並且將印表機設定從 HKEY_CURRENT_USER 群組複製到 HKEY_USERS/.DEFAULT 群組。

請參閱

PrintToPrinter 方法 | 列印 Web Form Viewer 中的報表