我有一个Windows服务应用程序,旨在与SQL服务器数据库(INSERT,UPDATE,ETC)进行交互。 Windows服务应用程序也是多线程的。
我创建了一个“App_Data
”文件夹来保存我的数据库并使用app.config
文件来获取连接信息等。
安装并启动服务后,没有任何反应,数据库不会更新,等等。
有没有人编写过与数据库交互的Windows服务应用程序?请告诉我如何克服这个问题..
由于
答案 0 :(得分:0)
根据您的描述,您不一定有数据库问题。您需要的是一种调试Windows服务的方法。特别是OnStart。
这是我经常在用C#编写的Windows服务中的OnStart中放入的内容
protected override void OnStart(string[] args)
{
foreach (string arg in args)
{
if (arg == "DEBUG_SERVICE")
DebugMode();
}
#if DEBUG
DebugMode();
#endif
timer.Interval = 1;
timer.Start();
}
private static void DebugMode()
{
Debugger.Break();
}
现在,当您想要调试OnStart时,可以从“服务控制”面板添加“DEBUG_SERVICE”命令参数。否则,您将不得不尝试手动附加调试器,这可能不及时。
还要注意我是如何启动计时器的。这允许单独的线程执行实际工作。这很重要,因为您希望OnStart及时完成。不需要计时器,因为某些Windows服务会响应文件监视器之类的事件,但更常见的情况是,它似乎是人们在Windows服务中执行的间隔轮询。
答案 1 :(得分:0)
据我所知,App_Data
文件夹以及指向它的连接字符串仅在ASP.NET Web应用程序和网站中可用 - 不在其他类型的Windows应用程序中
我的建议:将SQL Server数据库放在数据库服务器上 - 可以是本地计算机和SQL Server Express数据库 - 并连接到该服务器实例!