为什么我的c sharp命令提示符代码无法在我的服务器上运行,但在我的本地PC上工作正常

时间:2011-07-28 09:48:34

标签: c# asp.net windows iis-6 windows-server-2003

我创建了一些代码来执行命令行命令。它在我的开发PC上工作正常,但是当我尝试在服务器上运行代码(Windows 2003,IIS 6)时,命令不会运行。

我检查服务器上的路径,我确信它是正确的。我可以从服务器获得一些输出(参见附图)。

server output image

我认为这可能是权限问题。但我不知道在哪里检查这个以及如何纠正它。任何帮助将不胜感激。

更新

我在我的本地开发PC(Win 7和Wind XP)上运行此代码,它运行正常。但是,只要我在Windows 2003服务器上运行代码,它就无法运行。

ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.UseShellExecute = false;
processStartInfo.CreateNoWindow = true;
Process process = Process.Start(processStartInfo);

if (process != null)
{
process.StandardInput.WriteLine("c:");
process.StandardInput.WriteLine("cd\\");
process.StandardInput.WriteLine("cd C:\\Program Files\\Bank2CSV Pro");

/*This is Dynamic path for our application */

process.StandardInput.WriteLine("bank2csv_pro.exe" + " " + strSavedFilePath + fileName2    + " " + strSavedFilePath + fileNameCsv);

/* This is static path for command prompt*/

process.StandardInput.Close();
string outputString = process.StandardOutput.ReadToEnd(); 

1 个答案:

答案 0 :(得分:0)

我一直在测试,发现在Web服务器的Web根目录下工作时,我能够执行上面代码片段中显示的代码。

所以最后它似乎是一个权限问题。举一个我所做的实际例子

我修改了代码:

process.StandardInput.WriteLine("cd C:\\Program Files\\Bank2CSV Pro");

到此代码:

process.StandardInput.WriteLine("cd C:\\Inetpub\\wwwroot\\Bank2CSV Pro");

在此更改后,我能够执行写入磁盘的命令。显然问题是IUSR用户必须有权写入相关目录。我还可以通过给Program Files目录中的文件夹提供ISUR用户磁盘写访问权来解决问题,但我认为这不是一个好的做法......