从ASP.NET Webform启动后,控制台应用程序崩溃

时间:2010-12-17 18:22:04

标签: asp.net process console exe

我需要从asp.net webforms页面触发Console App(exe)文件。显然主要问题是权限,现在我只是试图通过让asp.net服务模拟主管理员帐户来实现这一点。一旦我能够以稳定的方式工作,我将设置它自己的用户和权限。现在我非常感谢能帮助你实现这个目标。

这就是我所拥有的。

网络表单代码。

Dim p As New Process()
p.StartInfo.UseShellExecute = False
p.StartInfo.FileName = locn & exeName
p.StartInfo.CreateNoWindow = True
p.StartInfo.Arguments = GetTaskID
p.StartInfo.UserName = "adminuserid"
p.StartInfo.Domain = "domain"
Dim pw As New System.Security.SecureString
For Each ch As Char In "adminuserpassword"
   pw.AppendChar(ch)
Next
p.StartInfo.Password = pw
p.StartInfo.WorkingDirectory = "directory" 
p.StartInfo.RedirectStandardError = True
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.WindowStyle = Diagnostics.ProcessWindowStyle.Normal
p.StartInfo.LoadUserProfile = True
p.Start()
p.WaitForExit()

从按钮单击事件运行此代码成功启动EXE,我可以在服务器上的Process Manager中看到它。但是,该过程仅运行约3秒钟然后关闭。

事件日志在EXE崩溃/终止后显示此信息:

应用程序错误: 错误应用程序BlueLimeConsoleApp.exe,版本1.0.0.0,时间戳0x4d0ba5e2,错误模块KERNEL32.dll,版本6.0.6001.18000,时间戳0x4791a7a6,异常代码0xc0000142,错误偏移0x00009cac,进程ID 0x10e8,应用程序启动时间0x01cb9e14d0c53e0c。

系统事件: 应用程序弹出:BlueLimeConsoleApp.exe - 应用程序错误:应用程序无法正确初始化(0xc0000142)。单击“确定”以终止应用程序。

所以,似乎我能够启动EXE,但它没有明显的原因崩溃。

EXE中的代码是:

Module Module1

    Sub Main(ByVal args As String())

        For i As Integer = 0 To 10000
            Console.WriteLine("hello world")
            System.Threading.Thread.Sleep(1000)
        Next

    End Sub

End Module

此外,我正在尝试捕获StandardError和StandardOutput消息以进行测试,并且都返回空值。

此外,EXE可以通过RDC直接在服务器上启动,运行得很好。

我浪费了差不多2天试图让这个工作,并且在这一点上,我迫切需要一些经验丰富的投入。我甚至愿意向任何有解决方案的人赠送50美元作为礼物!

谢谢, 托德

1 个答案:

答案 0 :(得分:1)

感谢Rob Z我能够实现这一点,一旦我删除了除以下内容之外的所有内容,它在网络服务用户下成功运行。现在我只需要用更安全的用户来运行它。

p.StartInfo.UseShellExecute = False
p.StartInfo.FileName = locn & exeName
p.StartInfo.Arguments = GetTaskID 
p.Start()