C# 为什么my.exe不能始终从Web服务写入文件?

C# 为什么my.exe不能始终从Web服务写入文件?,c#,web-services,iis-7.5,asmx,processstartinfo,C#,Web Services,Iis 7.5,Asmx,Processstartinfo,这是一个让我毛骨悚然的问题。 TL:DR;IIS 7.5 webservice调用写入文件的.exe。当我导航到不在debug/cassini中的.asmx页面时工作,在chrome/FF中实际的IIS,但当我从应用程序调用服务时不工作。最终,此webservice调用将需要来自windows服务调用 上面的代码调用一个小的exe来从另一个TIFF文件生成TIFF。它在一个包裹在webservice调用中的DLL中。我已经一切正常,我可以去我的本地主机服务器,运行我创建的DataService.

这是一个让我毛骨悚然的问题。 TL:DR;IIS 7.5 webservice调用写入文件的.exe。当我导航到不在debug/cassini中的.asmx页面时工作,在chrome/FF中实际的IIS,但当我从应用程序调用服务时不工作。最终,此webservice调用将需要来自windows服务调用

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


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

它在哪一行失败?另外,我建议使用String.Format,而不是那个难看的文本块。我遗漏了什么?我告诉你我们缺少什么:关于任何错误消息的正确信息。您是否已尝试/捕获服务器代码?您是否在客户端尝试/捕获记录了任何异常?你的客户端代码是如何连接的?它使用什么凭据?服务器上的身份验证模型是什么?你使用模拟吗?啊,是的,错误处理。这其中没有任何失败,所以我必须实现以捕获任何东西。客户端代码愉快地调用此服务,并且工作正常。资格证书老实说,我已经尝试过用户/通行证、本地系统、本地服务、网络服务、IUSR、模拟、匿名身份验证的每一种排列方式,但它们都没有任何区别。
        // -------------------------------------------------------------------- 
        //      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();
        }