![]() |
1
8
危险答案:“无效的自定义配置和错误的全局异常处理程序如何在.NET Windows服务中显示自己?” 算了出来。 问题的根本原因是app.config中的自定义配置节无效。我们使用自定义配置节从app.config配置服务,并且configurationSection派生类的程序集和命名空间最近发生了更改。 事实证明,我们的生产配置正在错误的程序集中查找自定义配置节的定义,而未能实例化时引发的异常被错误隐藏,在服务生命周期早期捕获的异常将尝试记录到自定义日志,而不是应用程序e中。通风日志。(由于自定义事件日志中不存在事件日志源,这将从全局异常处理程序中引发另一个异常,服务将在构造函数中终止。) 第二个异常没有被记录到任何地方,我们只是通过代码检查发现的。 解决方法是修复配置并修改全局异常处理程序,使其仅尝试使用服务名称作为事件日志源写入应用程序事件日志。(InstallUtil将服务名注册为应用程序日志上的事件日志源。) 谢谢大家的帮助!很抱歉,这个特定的问题最终只针对我们的设置。 |
![]() |
2
2
可能从您描述的错误消息中
net start blah.blah.exe“服务名无效。” 您在Visual Studio中添加的“服务安装”组件中为服务提供的名称不是您认为的名称。 我有过很多次这样的问题,开发人员在安装时错误地命名了服务。 |
![]() |
3
1
在服务启动时,您打算做什么? 还要检查运行服务的帐户,该帐户具有必要的权限。 |
![]() |
4
1
我在为自己的服务编程时遇到过很多这样的问题,所以我将列出一系列在各个方面解决了我的问题并希望它们能帮助您:
希望在某种程度上有所帮助。 |
![]() |
5
0
这是一个共同的问题。您在开始活动中有什么代码? 您应该只有在服务启动时激活计时器的代码。这允许启动事件快速完成并通知控制器。如果执行时间比这长,您将得到收到的错误。可能有一些原因(可能与数据有关)导致它在生产中花费更长时间。 当计时器滴答作响时,执行代码并停止计时器。显然,还要将所有内容放入try/catch并记录异常。 |
![]() |
6
0
当
由于权限不足,实体框架无法连接到数据库服务器时遇到同样的问题。 最好向应用程序添加全局级错误日志记录机制,以便轻松调试问题。在某些情况下,事件查看器可能无法显示确切的详细信息。 |