我有一个简单的桌面应用程序,其中包含用于打印机的API库,可在通过USB连接的打印机上发送文本。桌面应用程序运行正常。
目的是创建一个WCF服务(托管在Windows服务中),通过它我打印文本。从我在WCF服务中的调试日志中,我看到数据已正确发送到打印机,但打印机报告失败。 Desktop / WCF服务中的代码和数据完全相同。不幸的是,API库函数结果只是"失败"并且没有例外/附加信息。最让人想到的是,WCF服务的应用程序类型默认无法访问串行端口。有必要为WCF服务进行特殊设置吗?
Windows 10
.NET Framework 4
Visual Studio 10
打印机:SANE SK1-21(api UpdSdk.dll)
Windows服务中托管的WCF服务
更新 我尝试用最少的代码创建一个新的极简主义Windows服务 - 打印失败。我使用相同的代码创建了一个新的Windows窗体应用程序和控制台应用程序,并且打印效果很好。
答案 0 :(得分:0)
我找到了一个解决方案。当我使用
安装Windows服务(托管wcf服务)时serviceProcessInstaller.Account = ServiceAccount.LocalSystem;
比打印机运行良好。感谢1.618关于用户权限的观点。
但是,出于安全原因,像LocalSystem一样运行是不合适的。我可能需要为此服务创建一个特殊的用户帐户?特定的特权。所以我不能接受我自己的答案:)