C#代码使用Process.Start运行在运行代码的同一台PC上本地保存的exe。在Visual Studio中,此工作正常,并调用exe并弹出cmd窗口。一旦exe完成,控制权就会传递回C#调用应用程序。但是,一旦将Web应用程序发布到本地IIS,并将应用程序池标识设置为自定义帐户,这将不再有效。 exe可以在任务管理器中作为正在运行的进程查看,但是不会弹出cmd窗口以向用户指示它正在运行。 try / catch块没有捕获任何错误。应用程序池标识确实具有运行exe的权限。如何确保cmd窗口在IIS中可供用户查看,就像在Visual Studio中一样?
答案 0 :(得分:1)
Microsoft不建议从Web应用程序调用.exe,因为出于安全原因w3wp.exe在沙盒环境中运行,因此它启动的任何线程/任务/进程与启动它时不同你自己,因此可能无法按预期工作。
您可能希望将控制台应用程序重新编码为ASP.NET Web API(以前称为WCF),可能托管在IIS或Windows服务中。
答案 1 :(得分:0)
我使用JavaScript解决了这个问题。我在我的按钮上添加了一个“OnClientClick”事件,这启动了我的javascript函数。此函数创建了一个新的ActiveXObject,然后运行有问题的文件。现在,这可以通过IIS成功运行。