【发布时间】:2011-10-16 08:33:29
【问题描述】:
我编写了一个使用 openpop 邮件客户端和检索电子邮件的 Windows 服务。然后它通过主题和正文更新数据库和各种东西。它还下载附件并根据电子邮件的时间戳在驱动器上创建一个文件夹目录,然后按年、月、日,然后保存图像。因此,我在开发中使用类库项目、用于调试的 winform 项目和 Windows 服务项目在我的机器上构建了此服务。 所有逻辑都包含在一个类库中。我构建了库并在表单和 Windows 服务中引用了 dll。当我在我的机器上构建服务并使用 installutil 安装它时,它可以正常工作,并且可以完成它应该做的事情。但是当我投入生产时,操作系统是 Windows Server 2003 R2,它为 LIVE 数据库使用了不同的连接字符串。
唯一改变的是连接字符串和操作系统。我安装了该服务,它安装得很好,但什么也没做。它不会创建文件夹或将图像保存到磁盘。我知道我应该记录错误,但这是我的第一份工作,我是这个领域的新手。所以我尝试编写一些日志记录事件,但它不会创建日志并写入事件。事实上,如果我尝试创建日志并写入事件,作为我在 onstart 子中的第一次调用,它不会这样做。现在我迷路了,我不知道从这里去哪里。如果您花时间阅读本文,感谢您提供的任何意见。
这是我的 OnStart 方法中的代码。
Dim LiveEvents As New EventLog
If Not EventLog.SourceExists("MySource") Then
EventLog.CreateEventSource("MySource", "GL")
End If
LiveEvents.Source = "MySource"
LiveEvents.Log = "GL"
LiveEvents.WriteEntry("ServiceStarted and is working.", EventLogEntryType.Information)
Dim Logic As New ProcessMail
workTimer = New Timer(New TimerCallback(AddressOf Logic.ProcessMessages), Nothing, (1000 * 60 * 10), (1000 * 60 * 10))
LiveEvents.WriteEntry("Called Our DLL", EventLogEntryType.Information)
MyBase.OnStart(args)
所以,如果你不知道这里的问题。 1. 如果我需要在 Windows Server 2003 R2 中使用 Windows 服务创建目录和保存文件。我应该使用什么 System System.ServiceProcess.ServiceInstaller Account 属性? 2. 我需要在 windows server 2003 R2 中进行任何特殊的设置过程,以允许我安装的服务有权对目录进行读写访问吗?
感谢您提供的任何信息和帮助。
【问题讨论】:
-
服务以谁的身份运行?本地系统或特定帐户?您要创建哪些文件夹?您需要返回并添加一些检测工具,以便捕捉正在发生的错误并找出它在抱怨什么。
-
该服务应该以管理员身份运行,它在我设置的 c:/images 文件夹中动态创建文件夹。顺便说一句,如果本地系统最强大,我为每个帐户属性创建了 4 个构建,那么我将使用它
-
在 SCM 中为您的服务配置了什么帐户?
-
生产服务器上的 SCM Windows server 2003 ?
-
@Joe 它为本地系统配置,我正在使用本地系统。它只是没有单步执行代码,我的调试项目和生产之间存在脱节,我无法弄清楚它是什么
标签: vb.net windows-services windows-server-2003