这是一个让我拔头发的问题。 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 页面调用它时,该调用有效。