从 Web 服务 VB.NET 调用进程时不工作

本文关键字:进程 工作 调用 NET Web 服务 VB | 更新日期: 2023-09-27 18:34:24

我正在编写一个程序,在ApplicationXtender(AX(中将文档从一个应用程序移动到另一个应用程序。 AX 全功能客户端已经有这样一个可以处理任务的程序(迁移向导(,因此我创建了一个函数,该函数使用 Process.Start(( 启动它并提供自动化它所需的参数。 当我从控制台应用或 Windows 窗体应用调用该函数时,迁移向导可以完美运行。 但是,该过程必须由基于 Web 的工作流项目中的事件启动,因此我编写了一个包含相同函数的 Web 服务,然后在工作流中使用调用 Web 服务控件来启动它。 当我从 Web 服务使用该函数时,该过程不会完成。 我可以看到它挂在任务管理器中。 我很确定这与 IIS 中的用户设置有关,但我对 IIS 不够熟悉,无法产生任何重大差异。 我已经在 IIS 中配置了匿名身份验证的用户标识,以使用对 AX 具有完全权限的特定用户启动,并将 DefaultAppPool 设置为作为本地系统运行,但两者都不起作用。 我想我可能需要模拟用户,但我不知道该怎么做。 有什么建议吗?

作为参考,这是我的代码:

使用服务代码-

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

service.asmx 文件中的 MoveDocs(( 函数与上面的函数相同,但减去声明中的"shared"修饰符。 应用程序有效,Web 服务无效。

从 Web 服务 VB.NET 调用进程时不工作

ProcessStartInfo 具有用户名、密码和域的属性。 有关于 MSDN 的更多信息 -http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.password.aspx