我们在IIS(Windows Server 2016)上运行ASP.Net代码。我们的Asp.Net代码启动外部exe。通常,一切正常。但是有时exe无法启动。发生这种情况时,只需完全重启计算机即可解决问题。
我编写了测试代码以仅启动notepad.exe。它会工作一段时间,并在需要时启动notepad.exe。一段时间后再次无法启动notepad.exe,所有连续调用将失败。重新启动IIS将无济于事。重新启动PC将解决问题。
ProcessStartInfo processStartInfo =
new ProcessStartInfo(@"C:\Windows\notepad.exe");
Process process = new Process();
process.StartInfo = processStartInfo;
process.Start()
我希望notepad.exe每次都能开始工作。或者至少在失败的情况下,获得描述失败原因的有意义的异常说明。我想知道这可能是某种IIS DoS保护。我们的应用程序占用大量资源,并且在运行多个小时后会发生此故障。
答案 0 :(得分:0)
使用Notepad.exe是一个不好的示例,因为它具有UI组件,希望您的external.exe没有,因为它具有UI组件。
IIS没有您所描述的任何“ DoS”类型保护。
我会尝试两件事: 1)Process.Start()返回布尔值。如果返回false,则向应用程序添加一些错误日志记录,以从Process对象中转储信息。 2)由于此问题一旦开始发生就很容易重现,请运行Sysinternals ProcMon,看看是否收到任何Process Start Events并查看Process Terminate事件。