我是 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 访问。我可以列出我的打印机,还可以获取有关天气预报的数据。但我无法再创建打印了?
<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.Printing 和 System.Drawing.Printing 我也看到了提示。因此我认为这是因为我托管为 Windows 服务。
不支持使用 System.Printing 命名空间内的类 在 Windows 服务或 ASP.NET 应用程序或服务中。尝试 从这些应用程序类型之一中使用这些类可能 产生意想不到的问题,例如服务性能下降 和运行时异常。