2010-10-28 137 views
0

用户(经过身份验证的域管理员)应该能够从IIS(7.x)aspx(c#)页启动批处理作业(通常是exe文件)时,正确的方法是什么?这是一个内部网站。批处理作业必须以域管理员的身份在Web服务器上运行。网站池由AD网络服务或类似的受限帐户执行。从IIS启动批处理作业

我可以想到的方法(及其缺点): 1.使用System.Diagnostics.Process.Start与另一个帐户启动exe文件。此功能在IIS 7.x中被禁用,我如何允许它? 2.创建一个调度任务并调用预定任务api。这个非托管dll会给VS编译器提供警告,因为从托管代码调用是不安全的。 3.我想有一个更好的方法,因为以前的建议似乎不安全或强大。

回答

2

我建议你有一个计划任务或Windows服务,轮询一个公共存储库以查看是否应该运行批处理作业 - 因为批处理作业通常用于长时间运行的进程。

您可以将您希望从ASP.NET网站运行的批处理文件和参数的格式保存到数据库(MySQL,Oracle,SQL Server等)中,然后让您的Windows服务/计划任务对此进行轮询数据库定期。

+0

很好的答案,谢谢。如果批处理作业应该在另一台服务器上执行,则从Windows服务中查询数据库也可以验证应用程序。 – 2010-10-28 12:40:59

+0

我支持这个答案,因为从IIS运行批处理/可执行文件通常是一个糟糕的主意。它可能会危及安全性,稳定性和性能。如果您在单独的流程中完成实际工作,并控制允许或禁止哪些操作,则更节省成本。 – chiccodoro 2010-11-16 09:30:47