2016-04-04 60 views
0

我在Windows Server 2012的IIS8上托管了一个asp.net应用程序。 此应用程序假设要执行批处理文件。IIS 8(windows server 2012)无法运行批处理文件

它工作完美,如果我在调试模式下执行与Visual Studio的应用程序。但是当我将它上传到IIS时,应用程序无法执行批处理文件。

我试图用exe文件更改批处理文件。同样的问题。

假设从应用程序(WCF应用程序)执行,在IIS中的批处理文件:

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
       proc.StartInfo.WorkingDirectory = @"C:\path"; 
       proc.StartInfo.FileName = @"C:\path\executer.bat"; 
       proc.Start(); 
       proc.Close(); 

请大家帮忙,

+0

您需要提供更多关于该批处理文件应该如何执行的更多细节。它是从ASP.NET页面调用的吗?它可能是Web服务的一部分吗?这里没有足够的空间让我们提供很多帮助。 –

+0

我增加了更多细节。 –

+1

如果你确定批处理文件没有被触发,那么我会在启动它的代码周围放置一些try-catch块,并试图建立一些记录信息。在服务器上,您很可能会处理权限问题,其中运行站点的帐户上下文无法访问批处理文件主机路径。 –

回答

0

最有可能遇到的问题是由于权限。您需要检查您的应用程序正在运行的IIS应用程序池的帐户是否已配置,以及该帐户是否有权运行批处理文件或该批处理文件中的命令。

在Visual Studio中运行时,您可能会以交互式用户的身份运行IIS Express。

在默认情况下在IIS下运行时,您正在运行ApplicationPoolUser身份,该身份没有执行代码的权限,没有文件访问权限或其他任何权限。除非您明确设置了具有对批处理文件的适当文件访问权限的其他帐户以及在批处理文件内执行命令的权限,否则您将无法从IIS内运行批处理文件。要将该应用程序池用户标识的更改更改为对读取和执行磁盘上的批处理文件具有权限的用户,并且具有运行批处理文件中正在执行的内容所需的任何权限。

-1

你的代码工作正常。可能有在批处理文件中的一些问题,我面对前。我的批处理文件是

start "" BATCHLOG.exe 

其中BATCHLOG.exe

有些时候,批处理文件命名为唯一

BATCHLOG.exe可执行

在Windows调度程序上无法正常工作,所以可能在您的情况下

0

确保您的应用程序访问的任何文件夹或文件具有授予AppPoolUser帐户的权限。查看应用程序资源文件夹也很重要。例如,如果您正在编写日志,请确保给appPool用户帐户足够的权限以写入该文件。