Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
VB.NET Windows服务适用于Win8x64,但不适用于Win2012_.net_Vb.net_Windows Services_Windows Server_Windows Server 2012 - Fatal编程技术网

VB.NET Windows服务适用于Win8x64,但不适用于Win2012

VB.NET Windows服务适用于Win8x64,但不适用于Win2012,.net,vb.net,windows-services,windows-server,windows-server-2012,.net,Vb.net,Windows Services,Windows Server,Windows Server 2012,我创建了一个应用程序作为Windows服务,它在运行Windows 8 x64的工作站上运行良好,并在OnStart()上的应用程序事件日志中写入了几个事件。我使用InstallUtil在Windows 2012计算机上安装它,它启动后立即停止。我在事件日志中看到的关于它的唯一内容是在系统下: The Foo service entered the stopped state. 如果不安装VS2012,我甚至无法在那台机器上调试它,我不想这样做,因为它在生产环境中 应用程序依赖于本地复制的

我创建了一个应用程序作为Windows服务,它在运行Windows 8 x64的工作站上运行良好,并在OnStart()上的应用程序事件日志中写入了几个事件。我使用InstallUtil在Windows 2012计算机上安装它,它启动后立即停止。我在事件日志中看到的关于它的唯一内容是在系统下:

The Foo service entered the stopped state. 
  • 如果不安装VS2012,我甚至无法在那台机器上调试它,我不想这样做,因为它在生产环境中
  • 应用程序依赖于本地复制的一个DLL
  • 两台计算机上都安装了.NET Framework 2.0至4.5
  • 我尝试在兼容性下以管理员身份运行,但它设置为在LocalService下运行,所以它应该有权限执行其任务所要执行的所有操作

编辑1:为什么你对这个问题投否决票,甚至连一句话都不说为什么它不好?

我在调试windows服务方面学到的一些东西可能会帮助你解决问题

  • 按照Tim在评论中的建议,尝试将windows服务中每个方法的所有内容都记录到文本文件中
  • 通过向appdomain添加事件处理程序,尝试在服务退出之前捕获未处理的异常。我有我的日志函数,可以写入文本文件

    AddHandler AppDomain.CurrentDomain.UnhandledException,CurrentDomain的地址\u UnhandledException

    Public Sub CurrentDomain_UnhandledException(sender As Object, e As UnhandledExceptionEventArgs)
            'Log and output exception message before the application exits.
            Dim exp = DirectCast(e.ExceptionObject, Exception)
            Dim formatexp = String.Format("Exception: {0}; Message: {1}: InnerException: {2}",
                              exp.ToString(),
                              exp.Message.ToString(),
                              exp.InnerException.ToString())
            Log(formatexp)
            Console.WriteLine(formatexp)
    
            Log("Application exited due to unhandled exception")
            Console.WriteLine("Service exited due to unhandled exception")
            'Exit the batch process gracefully.
            Environment.Exit(-1)
    End Sub
    
  • 尝试使用WindDbg调试Windows服务崩溃或挂起问题,您可以从下载它

  • 检查尝试访问服务器上任何资源的服务帐户是否有权访问这些资源

  • 如果您希望看到代码的实时执行,那么将执行记录到信号器主机。这可能有些过分,但我曾经有多个线程执行不同的进程,并且我能够使用signar调试一个问题


  • 注意:如果您可以发布一些示例代码,那么这将有助于我们为您提供帮助。

    您是否检查了事件查看器以查看其中是否有任何信息?另一种选择是将日志记录添加到您的服务中,并将其写入文本文件-您可能会发现它失败的地方。Tim,我在问题中提到,我的应用程序在OnStart方法中写入了多个事件(没有一个会传递到事件日志(或事件查看器)),请重新阅读。抱歉,我第一次错过了。由于没有编写任何事件,这就为您提供了一个开始查看是否可以确定其不起作用的位置。将日志记录添加到一个文本文件中,您可以在其中记录每个步骤(如果您还没有这样做的话),可能会将其缩小到它停止工作的确切位置。另外,请仔细检查您的生产框,以确保LocalService有权写入应用程序日志。我猜它会在引发OnStart之前停止工作,我也不认为这是权限错误。我还可以查看其他日志吗?除了重写您的服务,让它将每个步骤的完成情况写入一个文本文件,我想不出来。谢谢!我来试一试,你能在答案中加入Log函数吗?