我需要从asp.net webforms页面触发控制台应用程序(exe)文件。显然,主要问题是权限,现在我只是试图通过让asp.net服务模拟主管理员帐户来实现这个功能。一旦我能够以稳定的方式工作,我将设置它自己的用户和权限。现在,我真的很感谢帮助这个工作。控制台应用程序从ASP.NET Webform启动后崩溃
这是我的。
Web窗体代码。
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,我可以在服务器上的进程管理器中看到。然而,该过程只运行约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美元作为谢谢你的礼物送给有解决方案的人!
感谢, 托德
此外,从webform启动CMD.exe会生成相同的行为。 – 2010-12-17 19:13:55
您是否试图在本地计算机或运行ASP.NET的服务器上执行此操作? – rjzii 2010-12-17 19:15:08
我正在尝试在我的VPS上运行带有ASP.NET 3.5和IIS7的Windows 2008 Server。我在机器上拥有完整的管理员权限。所有这些在VS2008的本地机器上都能正常工作。 – 2010-12-17 19:17:54