我们有一个内部页面,我想用它来运行一个更新服务器上一些文件的可执行文件。换句话说,我不是每次需要手动运行这个可执行文件时都登录到服务器,而是希望从浏览器运行它。可执行文件在服务器上是自包含的,并且不与用户交互。
下面是我的代码:
try
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = Server.MapPath(@"\iPhoneXMLCreator.exe");
p.StartInfo.WorkingDirectory = Server.MapPath(@"\");
p.StartInfo.RedirectStandardOutput = false;
p.Start();
p.WaitForExit();
lblResult.Text = "Success!";
}
catch (Exception ex)
{
lblResult.Text = "Oops, there was a problem.<br><Br>" + ex.Message;
}当我运行它时,进程显示在任务管理器中,但随后在几秒钟内退出,而没有更新它应该更新的文件。没有要传递的参数,只有一个简单的可执行文件。有什么想法吗?
发布于 2009-10-22 03:21:58
首先,我会检查运行web应用程序的帐户是否具有适当的权限。
发布于 2009-10-22 03:23:20
这很可能是权限问题。
您可以通过模拟或向相应帐户授予权限来完成此操作。正确的方法是使用模拟。
http://msdn.microsoft.com/en-us/library/xh507fc5.aspx
发布于 2009-10-22 03:24:41
当您在以您自己的身份登录的服务器上手动运行可执行文件时,它是否会运行并处理XML?
那么这可能是一个简单的权限问题,因为除非您是在模拟...它可能试图在ASPNET机器帐户下运行exe,而该帐户很可能对XML所在的文件夹没有权限。只是基于你提供的信息的一个想法。
https://stackoverflow.com/questions/1603006
复制相似问题