【发布时间】:2012-12-21 15:40:11
【问题描述】:
我对 Windows 服务和线程有点陌生,所以我希望我在这里没有犯明显的错误。我有一个我为在 C# 中运行各种网络维护类型活动而开发的应用程序。该应用程序在我的本地机器上完美运行,我决定希望它作为 Windows 服务运行,因此使用相同的代码进行适当的更改,并再次在我的本地机器上运行良好。
当我将它移植到我网络上的服务器上时,我的问题就出现了。非 Windows 服务代码再次运行良好并按预期运行。然而,Windows 服务代码似乎什么也不做。该过程可以正常安装并且可以正常启动/停止,但似乎没有任何代码正在执行,对于在 Visual Studio 中调试 Windows 服务的任何帮助也将不胜感激。这是我的 OnStart 过程中似乎没有执行的代码。
smThread = new Thread(delegate() { sm.RunServerMonitor(ref run); });
smThread.Start();
dailyThread = new Thread(delegate() { dailyEvents(); });
dailyThread.Start();
因为非 Windows 服务代码有效,我不相信我会遇到权限类型问题,除非需要设置不同的权限以允许服务远程执行任务,而不是我需要的纯 c# 代码做同样的事情。
谢谢, 马特
【问题讨论】:
-
你能告诉我们你用来连接服务的代码吗?当您说 Windows 服务时,您是指 WCF 服务吗?
-
可能是权限问题。运行该服务的帐户是什么?您的桌面应用程序可以以管理员身份运行,该服务可以作为没有权限的其他服务运行。
-
如果您运行的是 WCF Web 服务,您可能需要更改应用程序池帐户设置。默认的 IIS_IUSR 帐户没有很多权限。你在运行 WCF 吗?
-
“远程执行任务”是什么意思?服务一般无权访问网络资源。您必须更改服务的登录帐户。
-
不是WCF服务,如何设置服务以管理员身份运行?
标签: c# windows multithreading service