Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows Server 2012 R2上运行Windows服务_C#_Windows Services_Windows Server 2012 R2 - Fatal编程技术网

C# 在Windows Server 2012 R2上运行Windows服务

C# 在Windows Server 2012 R2上运行Windows服务,c#,windows-services,windows-server-2012-r2,C#,Windows Services,Windows Server 2012 R2,我已经编写了一个Windows服务,并在自己的PC上进行了测试和调试,它可以正常工作!但是,当我在生产服务器(Windows server 2012 R2)上部署该服务时,该服务将无法工作。服务启动和停止时没有任何错误,但服务启动后不会执行任何操作。服务没有在我的日志文件中写入任何内容 这是我到目前为止在服务器上所做的工作: 将所有文件从本地PC复制到服务器(.exe、.exe.config、.pdb、.vshost、.vshost.exe、.exe.manifest和我自己的文件Settin

我已经编写了一个Windows服务,并在自己的PC上进行了测试和调试,它可以正常工作!但是,当我在生产服务器(Windows server 2012 R2)上部署该服务时,该服务将无法工作。服务启动和停止时没有任何错误,但服务启动后不会执行任何操作。服务没有在我的日志文件中写入任何内容

这是我到目前为止在服务器上所做的工作:

  • 将所有文件从本地PC复制到服务器(
    .exe、.exe.config、.pdb、.vshost、.vshost.exe、.exe.manifest
    和我自己的文件
    Settings.xml、envetest.txt
    LogFile.txt
  • 复制的文件放在
    C:\SomeFolderName\
    上,我已经编写了一个安装和卸载
    .bat
    脚本
  • 我已将具有
    完全控制权的网络服务用户添加到目录中
  • 我以管理员身份登录
这是服务的一些信息

  • 该服务从SQL SERVER 2012 Express数据库获取数据。数据库与服务位于同一台服务器上。数据库可以从任何应用程序查询(我已经测试过了!)
  • 服务将日志添加到与服务可执行文件位于同一目录中的日志文件中
  • 服务写入ASCII文件,该文件也位于同一目录中
  • 该服务从同样位于同一目录中的XML文件获取配置
因此,总体情况是,服务读取/写入
C:\SomeFolderName\
目录中的许多文件

我不明白为什么服务在服务器上不能工作。我需要做什么吗

如果有什么不同,这里是我的OnStart()的代码


如果您需要更多代码,请告诉我。

您是否已使用服务安装工具正确注册了服务?我们无法复制此信息。Windows Server 2012和该操作系统上的Windows服务没有什么特别之处。问题一定在您的代码中。添加更多日志记录以确保日志记录正常工作,如果没有帮助,请附加(远程)调试器。可能只是一些权限问题。如果以交互方式运行应用程序会发生什么?您是否检查了服务器的事件日志?
protected override void OnStart(string[] args)
{
    mainTask = new Task(PollDatabase, cts.Token, TaskCreationOptions.LongRunning);
    mainTask.Start();
}