1
我更新已存在的老工藝,其工作創建一個COM對象的過程如下:無法從一個asp網站
用戶提交它運行下面的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
的執行權限。
什麼異常,你拋出? – Kev 2011-01-14 16:16:03
得到它的工作。我從Visual Studio中重新生成了我的強名鍵,而不是通過「sn -k」。另外,如果RedirectStandardOutput,UseShellExecute和CreateNoWindow沒有全部設置正確,它會嘗試在窗口中運行應用程序,並且失敗並拒絕訪問。 – user575846 2011-01-14 18:56:24