1

我在服务器上部署了一个 ASP.Net 应用程序。我想知道它是否能够在单击按钮时访问我的本地系统 exe 文件。

我在互联网上阅读了很多关于此的文章。有人说 ASP.Net 应用程序无法访问本地程序。虽然有些人建议它取决于权限、身份和其他东西。

我在本地机器上尝试了类似的事情,但即使在授予本地系统访问权限、文件的网络服务甚至将应用程序池标识更改为本地系统之后,我也无法完成相同的操作......

所以我只想确认这件事是否可能......

这是我要执行的代码

 Dim pstartinfo As New ProcessStartInfo()
        Dim p As New Process()

        pstartinfo.WorkingDirectory = "D:\VS2010Projects\SignatureCaptureWindows\bin\Debug"
        pstartinfo.FileName = "SignatureCaptureWindows.exe"
        pstartinfo.CreateNoWindow = False

        p = Process.Start(pstartinfo)

        p.WaitForExit()

        If (Not p.ExitCode.Equals(0)) Then

            Response.Write("Image Successfully saved in Database with ID = " + p.ExitCode.ToString())
            DisplaySavedImage(p.ExitCode)
        Else

        End If

在 locahost 上运行时,它工作正常。当我在本地 IIS 上部署它时,它不会打开 exe

4

1 回答 1

1

有可能并且要求应用程序池用户对可执行文件的位置具有权限以及执行它的权限。

您可以使用Process该类来执行几乎任何事情(如果需要,甚至可以使用不同的用户凭据)。

不要忘记尝试使用 UI 运行应用程序通常不会很好地运行,因为应用程序池不在交互式环境中运行(因此,它无法打开窗口和单击按钮)。

您应该限制自己使用非交互式的可执行文件,因为 Web 服务器将无法与 windows 等进行交互。


在您的特定场景中,您需要用户输入他们的签名并保存它 - 您需要他们上传签名(我假设图像文件已经存在),或者在客户端创建canvas这样的图像(比如和JavaScript)。然后,您可以上传图像并保存。

于 2012-09-07T11:24:38.320 回答