请您为.NET Core
建议一种方法,该方法能够在运行时检测代码是否在服务中执行?
我有.NET Framework
的工作代码,但我认为无法移植它,因为它基于.NET Core 1.1
中不可用的属性。
答案 0 :(得分:1)
.NET Core中的公共托管API无法直接实现这一点。 Environment.UserInteractive
默认为固定值,并检查测试stdout如何连接可以产生意外结果以及各种情况(例如带有& stdout连接的子进程)。
在我的sample implementation服务托管API中,当可执行文件作为Windows服务安装时,我最终要求服务注册添加命令行参数(--run-as-service
)(在此应用程序中,已调用与--register-service
)。很多非.NET应用程序都以这种方式工作,包括docker。