簡體   English   中英

通過作為 Windows 服務托管的 ASP.NET Core-Web-Api 打印

[英]Printing via ASP.NET Core-Web-Api hosted as Windows Service

我是ASP.NET Core-Web-Api 的新手,也許你對我有一些提示。 我使用ASP.NET Core 7.0 我將我的出版物托管為Windows 服務 作為基礎,我使用Microsoft 的天氣預報演示應用程序。 我對此進行了擴展,以便我可以列出所有本地 Windows 打印機並通過另一個界面打印一個簡單的字符串。

當我通過 Visual Studio 構建我的 ASP.NET Core-Web-Api 時,我可以選擇在調試或發布模式下使用“ https ”或“ IIS Express ”來托管它。 通過 Swagger 我可以使用我所有的功能,即使是打印作品。

在此處輸入圖像描述

現在我將我的應用程序托管為Windows 服務,也可以通過Swagger訪問該應用程序。 我可以列出我的打印機,還可以獲取有關天氣預報的數據。 但是我不能再打印了?

  • 調用時無限循環但狀態代碼為 200 OK。 在我的打印機隊列中也找不到作業。
  • 我通過 Visual Studio 托管的行為是否與我在 Windows 服務中托管的行為不同?
  • 我的 Windows 服務是通過本地管理員帳戶啟動的,我的打印機也可供所有人使用。

在此處輸入圖像描述

我使用以下包

  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="7.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Hosting.WindowsServices" Version="7.0.2" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
    <PackageReference Include="System.Drawing.Common" Version="7.0.0" />
  </ItemGroup>

我使用 PageDocument 創建我的文檔,在 Visual Studio 中工作正常,但在 Windows 服務中卻不行。

    PrintDocument pd = new PrintDocument();            
    pd.PrinterSettings.PrinterName = printer;            
    pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
    pd.Print();

對於System.PrintingSystem.Drawing.Printing我也看到了提示。 因此我認為這是因為我托管為 Windows 服務。

System.Printing 命名空間中的類不支持在 Windows 服務或 ASP.NET 應用程序或服務中使用。 嘗試從其中一種應用程序類型中使用這些類可能會產生意想不到的問題,例如服務性能下降和運行時異常。

這個問題應該是權限問題。 請找到打印機服務,並更改登錄用戶。

您可以使用Process Monitor來驗證它。

相關鏈接

問題 Windows 服務和網絡打印機

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM