从部署在IIS 7.5上的asp.net应用程序运行perl脚本

从部署在IIS 7.5上的asp.net应用程序运行perl脚本,asp.net,perl,iis,deployment,Asp.net,Perl,Iis,Deployment,我有一个非常紧急的要求。我有一个ASP.net应用程序在MVC架构中完成的框架4.0上。在应用程序中,我调用一个Perl脚本,将数据从MySQL复制到后端的SQL Server 2010。当我从VisualStudio2010运行应用程序时,Perl脚本成功运行并复制了数据。但是,当我在IIS7.5上部署相同的应用程序时,它没有显示任何更改,或者Perl scipt没有运行。我试着打印代码的每一步,发现所有的路径都是正确的。perl脚本将通过批处理文件运行 下面是启动进程的代码,该进程运行批处理

我有一个非常紧急的要求。我有一个ASP.net应用程序在MVC架构中完成的框架4.0上。在应用程序中,我调用一个Perl脚本,将数据从MySQL复制到后端的SQL Server 2010。当我从VisualStudio2010运行应用程序时,Perl脚本成功运行并复制了数据。但是,当我在IIS7.5上部署相同的应用程序时,它没有显示任何更改,或者Perl scipt没有运行。我试着打印代码的每一步,发现所有的路径都是正确的。perl脚本将通过批处理文件运行

下面是启动进程的代码,该进程运行批处理文件,批处理文件又运行Perl脚本:

string strPath = string.Empty;
string strDirectory = string.Empty;
try {   
    strPath = "/k " + ConfigurationManager.AppSettings["UploadTLInfo"];//Path of the batch file comes from here 
    strDirectory = ConfigurationManager.AppSettings["WorkingDirectory"];
    ProcessStartInfo psi = new ProcessStartInfo("cmd.exe",strPath);
    psi.UseShellExecute = false;
    psi.WorkingDirectory = strDirectory;
    //psi.CreateNoWindow = true;
    //psi.WindowStyle = ProcessWindowStyle.Hidden;
    Process p = new Process();
    p.StartInfo = psi;
    p.Start();                
} catch (Exception ex) {
    throw ex;
}

最有可能的是,您的问题将与用户权限相关-当您从VS运行时,您可能正在使用ASP.NET Dev server和it用户的当前用户凭据,而当您从IIS运行时,可能正在使用NETWORK_服务或类似的系统用户,这些用户可能具有有限的权限,从而导致问题。另一个但不太可能出现的问题是批处理文件和/或pearl可能依赖于某些未在机器级别定义的环境变量等


解决方案之一是模拟另一个具有特定权限和/或环境的用户来运行进程。

可能会有所帮助。这篇文章我尝试了模拟=true以及我的域用户名和密码。但它不起作用