【发布时间】:2011-06-09 05:59:32
【问题描述】:
我正在更新一个已经存在的旧进程,它的工作原理如下:
用户提交一个表单,该表单运行以下 asp(简化,名称已更改):
<%
set rb = Server.CreateObject("RecordBuilder.SomeObject")
rb.Calculate()
rb.StartProcess()
%>
RecordBuilder.SomeObject 是旧的 VB6 DLL,我没有 VB6,所以我将其转换为 VB.Net 4.0
对Calculate() 的调用按预期工作,对StartProcess() 的调用失败。
StartProcess() 如下:
Public Function StartProcess()
Try
strProcess = "Starting process"
Dim proc = New Process()
proc.StartInfo.RedirectStandardOutput = True
proc.StartInfo.UseShellExecute = False
proc.StartInfo.CreateNoWindow = True
proc.StartInfo.FileName = "d:\App\RecordProcessor.exe"
Dim procHandle = proc.Start()
strProcess = "Started process"
Catch ex As Exception
Err.Raise(vbObjectError + 9999, "RecordBuilder.SomeObject", strProcess & " failed: " & ex.Message & "<hr />Stack Trace:<br />" & ex.StackTrace)
End Try
End Function
调用proc.Start() 失败,但是如果我将测试ASP 复制到.vbs 文件,它将按预期工作。
我已更改d:\App\RecordProcessor.exe 的权限,以授予组Everyone 的执行权限。
【问题讨论】:
-
抛出什么异常?
-
搞定了。我从 Visual Studio 中重新生成了我的强名称密钥,而不是通过“sn -k”。此外,如果 RedirectStandardOutput、UseShellExecute 和 CreateNoWindow 设置不正确,它会尝试在 Window 中运行应用程序并失败并拒绝访问。
标签: asp.net vb.net vbscript asp-classic com