繁体   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