【问题标题】:Running executable asynchronously from web application (safe solution)从 Web 应用程序异步运行可执行文件(安全解决方案)
【发布时间】:2011-02-07 11:49:42
【问题描述】:

在 IIS 托管的 Web 应用程序下运行外部 EXE 或 BAT 文件的 System.Diagnostics API 有哪些替代方案? 我想从我的 ASP.NET-MVC Web 应用程序运行外部 EXE 程序。我不需要等到程序退出。我只想启动程序。执行可能需要一些时间或者可能会崩溃,所以我想将它与 IIS 分开运行,这样 Web 应用程序只会触发它的执行。

【问题讨论】:

  • 只是一个问题,为什么不能使用 System.Diagnostic API? System.Diagnostic 允许您启动一个新进程,这就是您想要的..
  • @stefano:新进程将 IIS 工作进程作为其父进程。我不确定当子进程崩溃或分配大量内存时会发生什么。我希望 Web 应用程序在这种情况下是安全的。这就是为什么我不想将EXE程序的执行分开的原因。
  • 您的子进程不会对 IIS 工作进程造成伤害(除非您的子进程显式搜索其父进程并将其杀死)。

标签: .net asp.net iis executable


【解决方案1】:

我曾经做过的是创建一个 WebService(无论如何都将功能封装在其中)并将该方法指定为“OneWay”,这基本上是“Fire and Forget”。

http://msdn.microsoft.com/en-us/library/ms181848(v=vs.80).aspx

您的请求没有得到服务器的响应。

果然需要编写自己的“通知”逻辑,让用户知道任务的成功/失败。

正如 @stefano 在 cmets 中提到的,您可以使用诊断。

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.start.aspx

由于它将在 OneWay 设置中,您的 Web 应用不会等待应用完成运行后再发出 HttpResponse。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2012-11-08
    • 1970-01-01
    • 2019-07-08
    相关资源
    最近更新 更多