我正在windows server 2012上的IIS8中托管一个asp.net应用程序。这个应用程序假设执行一个批处理文件。
如果我在调试模式下使用visual studio执行应用程序,它会工作得很完美。但是,当我将其上传到IIS时,应用程序无法执行批处理文件。
我尝试用exe文件更改批处理文件。同样的问题。
假设从IIS中的应用程序(WCF应用程序)执行批处理文件:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.WorkingDirectory = @"C:\path";
proc.StartInfo.FileName = @"C:\path\executer.bat";
proc.Start();
proc.Close();
请帮帮忙,
发布于 2016-04-05 11:39:44
您遇到的问题最有可能是权限问题。你需要检查为哪个帐户配置了运行你的应用的IIS应用程序池,以及该帐户是否有权运行你的批处理文件或该批处理文件中的命令。
在Visual Studio中运行时,您可能会以交互用户的身份运行IIS Express。
当在IIS下运行时,默认情况下你是在ApplicationPoolUser
身份下运行的,它没有执行代码的权限,没有文件访问权限或其他任何东西。除非您显式地设置了另一个帐户,该帐户具有对批处理文件的适当文件访问权限以及在批处理文件内部执行命令的权限,否则您将无法从IIS中运行批处理文件。要更改这一点,请将应用程序池用户标识更改为具有读取和执行磁盘上的批处理文件的权限,并具有运行批处理文件中正在执行的内容所需的权限的用户。
发布于 2016-06-22 05:07:01
确保您的应用程序访问的任何文件夹或文件都具有授予AppPoolUser帐户的权限。检查应用程序的资源文件夹也很重要。例如,如果要写入日志,请确保授予appPool用户帐户足够的权限来写入该文件。
发布于 2016-04-05 15:41:31
您的代码运行良好。在使用.My批处理文件之前,可能在批处理文件中遇到了一些问题
start "" BATCHLOG.exe
其中BATCHLOG.exe是可执行文件
有时,批处理文件仅命名为
BATCHLOG.exe
https://stackoverflow.com/questions/36408293
复制相似问题