0

这是一个让我拔头发的问题。 TL:博士;IIS 7.5 webservice 调用 .exe 来写入文件。当我导航到 .asmx 页面(不在 debug/cassini 中,在 chrome/FF 中的实际 IIS)时工作,但当我从应用程序调用服务时不起作用。最终,此 Web 服务调用将需要来自 Windows 服务调用。


        // -------------------------------------------------------------------- 
        //      Use the UTMs as the corners for the projwin in the gdal_translate call below                                  
        // -------------------------------------------------------------------- 
        string sExecutionFile = string.Empty;
        if ((ConfigurationSettings.AppSettings["BIN_PATH"]!=null) && File.Exists(ConfigurationSettings.AppSettings["BIN_PATH"] + "/gdal_translate.exe"))
            sExecutionFile = Path.Combine(ConfigurationSettings.AppSettings["BIN_PATH"],"gdal_translate.exe");
        else
            sExecutionFile = "gdal_translate.exe";

        ProcessStartInfo psi = new ProcessStartInfo(sExecutionFile,
            "-projwin " + pointUL[0] + " " + pointUL[1] + " " +
             pointLR[0] + " " + pointLR[1] + " " +
            sImageFileName + " " + sResultsFileName);

        psi.UseShellExecute = false;
        psi.RedirectStandardOutput = true;
        psi.RedirectStandardInput = true;
        psi.RedirectStandardError = true;
        psi.CreateNoWindow = true;

        using(myProcess = new Process())
        {
         myProcess.StartInfo = psi;
         myProcess.Start();
         myProcess.WaitForExit();
         myProcess.Close();
         myProcess.Dispose();
        }

上面的代码调用一个小 exe 从另一个 TIFF 文件生成 TIFF。它位于一个包含在 web 服务调用中的 DLL 中。我一切正常,我可以去我的本地主机服务器,运行我创建的“DataService.asmx”页面,填写表格和 biggity-bam,我的新目录中有一个 TIFF(也是由 web 服务创建的) . 然后我写了一个小的命令行应用程序来尝试调用 web 服务。它愉快地调用了 web 服务和我为测试目的而尝试的其他一些服务。问题是我创建了新目录,但里面从来没有任何 TIFF 文件。调试后,我的代码抱怨上面的代码没有创建文件。我错过了什么?

我已经尝试了各种 IIS 7.5 配置选项以及相关目录的操作系统级权限。一直上升到“LocalSystem”会产生与下降到“AppPoolIdentity”,“IUSR”相同的行为......我不得不相信上面的代码失败了,即使它根本没有抛出任何异常。是否有更好的方法来调试来自 IIS Web 服务的 ProcessStartInfo 调用?我可以理解这是否根本不起作用,或者我是否必须以管理员帐户的身份运行它才能使其工作,但是当我直接从 .asmx 页面调用它时,该调用有效。

4

0 回答 0