通过作为 Windows 服务托管的 ASP.NET Core-Web-Api 进行打印

问题描述 投票:0回答:2

我是 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 应用程序或服务中。尝试 从这些应用程序类型之一中使用这些类可能 产生意想不到的问题,例如服务性能下降 和运行时异常。

printing swagger windows-services asp.net-core-webapi
2个回答
0
投票
这个问题应该是权限问题。请找到打印机服务,并更改登录用户。

您可以使用

Process Monitor来验证它。

相关链接

Windows 服务和网络打印机问题


0
投票
我有同样的问题,我无法从我发布的 api 打印

© www.soinside.com 2019 - 2024. All rights reserved.