为什么我的.exe总是不能从web服务写一个文件?

时间:2012-06-05 07:26:36

标签: c# web-services iis-7.5 asmx processstartinfo

这是一个让我脱掉头发的问题。 TL:DR; 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。它位于一个包含在webservice调用中的DLL中。我已经完成了所有工作,我可以访问我的localhost服务器,运行我创建的“DataService.asmx”页面,填写表单和biggity-bam,我的新目录中有一个TIFF(也是由webservice创建的) 。然后我写了一个小的命令行应用程序来尝试调用webservice。它很高兴地调用了webservice以及我尝试用于测试目的的其他一些服务。问题是我创建了新目录,但其中没有任何TIFF文件。调试后,我的代码抱怨上面的代码没有创建文件。 我缺少什么?

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

0 个答案:

没有答案