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

时间:2013-10-08 21:16:23

标签: c# vb.net wcf web-services asmx

我正在编写一个程序,在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服务没有。

1 个答案:

答案 0 :(得分:0)

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