我需要调用控制台应用程序将数据加载到位于公司域内的远程服务器上的另一个桌面应用程序中。
用户将进入网页并将数据上传到 asp.net Web 服务器,该服务器在转换后应调用该控制台应用程序。用户位于远程,除 Web 服务器外没有任何其他访问权限。
我决定降低安全性 Web 应用程序上下文,并让 asp.net 工作过程在当前 IIS 6.0 Web 服务器上启动控制台应用程序
我所做的:
我更改了本地系统应用程序池的安全帐户;
我添加了 ASPNET 帐户和 IIS_WPG IIS 进程帐户到管理员组;
我为“IIS Admin Service”和“World Wide Web Publishing Service”进程添加了“允许服务与 desctop 交互”,并重新启动了机器;
我试图通过测试页面代码隐藏在服务器端启动 BAT 文件,但失败:
protected void btnStart_Click(object sender, EventArgs e)
{
Process process = new Process();
process.StartInfo.FileName = @”C:\run.bat”;
process.StartInfo.UseShellExecute = false;
process.Start();
process.WaitForExit();
}
错误为access denied.
请帮我找到任何可行的想法如何在 Web 服务器端启动 bat 文件。谢谢
尝试将UseShellExecute
设置为 true 而不是 false。毕竟,批处理文件在 shell 中运行-因此您需要shell 来执行它。(另一个选项是运行 cmd.exe 并将批处理文件的名称作为参数传递,例如“cmd.exe / k c:\ run.bat”)
您可能还想尝试创建一个简单的.NET 应用程序,它只是(说)创建一个带有时间戳的文件,这样您可以测试“我可以启动另一个进程”位与“我可以让批处理文件工作”位分开。
将特定的批处理文件放在应用程序本身中。
string str_Path = Server.MapPath(".") + "\\run.bat";
ProcessStartInfo processInfo = new ProcessStartInfo(str_Path);
processInfo.UseShellExecute = false;
Process batchProcess = new Process();
batchProcess.StartInfo = processInfo;
batchProcess.Start();
看看这个例子:Run Interactive Command Shell or Batch Files From ASP.NET
它使用不同的方法。他们建议运行 cmd.exe 并逐行执行命令。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(58条)