2013-10-08 64 views
0

我正在編寫一個程序,將文檔從ApplicationXtender(AX)中的一個應用程序移動到另一個應用程序。 AX功能齊全的客戶端已經有了一個可以處理任務的程序(遷移向導),所以我創建了一個函數,該函數使用Process.Start()啓動它並提供使其自動執行所需的參數。當我從控制檯應用程序或Windows窗體應用程序調用該函數時,遷移向導完美地工作。但是,流程必須由基於Web的工作流項目中的事件啓動,因此我編寫了一個包含相同功能的Web服務,然後在工作流中使用調用Web服務控件來啓動它。當我使用Web服務的功能時,該過程沒有完成。我可以看到它掛在任務管理器中。我很確定它與IIS中的用戶設置有關,但是我對IIS不夠熟悉,沒有發現任何重大差異。我在IIS中配置了匿名身份驗證的用戶身份,以便與具有完全AX權限的特定用戶一起啓動,並將DefaultAppPool設置爲以本地系統身份運行,但都不起作用。我想我可能需要冒充用戶,但我不知道該怎麼做。有什麼建議麼?從Web服務調用進程無法工作VB.NET

作爲參考,這是我的代碼:

消費服務代碼 -

Sub Main() 

    Dim dbName As String 
    Dim appName As String 
    Dim preSalesNum As String 

    Console.WriteLine("Database: ") 
    dbName = Console.ReadLine 
    Console.WriteLine("") 

    Console.WriteLine("Application") 
    appName = Console.ReadLine 
    Console.WriteLine("") 

    Console.WriteLine("Pre-Sales Number:") 
    preSalesNum = Console.ReadLine 
    Console.WriteLine("") 

    MoveDocs.MoveDocs(dbName, appName, preSalesNum) 

End Sub 

MoveDocs功能(單獨類的內部) -

Public Shared Function MoveDocs(ByVal dbName As String, ByVal appName As String, 
    ByVal preSalesNum As String) As String 

    Try 
     Dim sourceApp As String 

     If appName = "PRE_SALES_PROJECTS" Then 
      sourceApp = "PROJECTS" 
     Else 
      sourceApp = "LOOSE-FURNITURE" 
     End If 

     Dim argsString As String = "/SD " & dbName & " /SU username /SP password /SA 
      " & appName & " /DD " & dbName & " /DU username /DP password /DA " & 
      sourceApp & " /S " & """" & preSalesNum & """" & " /A" 

     Dim procProp As New System.Diagnostics.ProcessStartInfo 
     With procProp 
      .FileName = "C:\Program Files (x86)\XtenderSolutions\Content 
      Management\MigrateWiz32.exe" 
      .Arguments = argsString 
     End With 

     Dim proc As System.Diagnostics.Process = 
      System.Diagnostics.Process.Start(procProp) 

     Return argsString 

    Catch ex As Exception 
     Return ex.ToString() 
    End Try 

End Function 

的MoveDocs()函數service.asmx文件與上面的文件相同,在聲明中減去'shared'修飾符。該應用程序的作品,網絡服務沒有。

回答

0

ProcessStartInfo具有用戶名,密碼和域的屬性。有更多的信息在MSDN - http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.password.aspx

+0

我試過了,但它似乎沒有區別。無論指定哪個用戶,它都可以在控制檯或Windows應用程序中運行,但當Web服務啓動該進程時,這些用戶都不會工作。 –

+0

如果你還沒有,你可以嘗試在IIS中啓用32位應用程序。另外,您是否能夠從流程標準錯誤或輸出流中捕獲任何信息? – kragan