簡體   English   中英

無法從ASP站點的COM對象中創建進程

[英]Cannot create a process in a COM object from an asp site

我正在更新一個已經存在的舊進程,其工作方式如下:

用戶提交運行以下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

檢查網站的匿名用戶帳戶是否對d:\\app文件夾及其可能接觸的任何其他文件夾具有必需的權限。

我注意到缺少的一件事是proc.WaitForExit()之后的proc.Start()

您可能希望這樣做,因此也可以從流程本身捕獲錯誤:

Dim stdError As New String
Try
    strProcess = "Starting process"
    Dim proc = New Process()
    proc.StartInfo.RedirectStandardOutput = True
    proc.StartInfo.RedirectStandardError = True
    proc.StartInfo.UseShellExecute = False
    proc.StartInfo.CreateNoWindow = True
    proc.StartInfo.FileName = "d:\App\RecordProcessor.exe"

    Dim procHandle = proc.Start()
    strProcess = "Started process"

    proc.WaitForExit()

    stdError = proc.StandardError.ReadToEnd()
    If stdError.Length > 0 Then
       '' So long since I did VB so next line might need tweaked
       Err.Raise(vbObjectError, "Caught StdError", stdError)
    End If
Catch ex As Exception
    Err.Raise(vbObjectError + 9999, "RecordBuilder.SomeObject", strProcess & _
         " failed: "  & ex.Message & "<hr />Stack Trace:<br />" & ex.StackTrace)
End Try

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM