C# 运行exe的ASP.NET Web应用程序在VS中工作,而不是在IIS中工作

C# 运行exe的ASP.NET Web应用程序在VS中工作,而不是在IIS中工作,c#,asp.net,iis,exe,C#,Asp.net,Iis,Exe,C#代码使用进程。开始运行在运行代码的同一台PC上本地保存的exe。在VisualStudio中,这可以正常工作,调用exe并弹出cmd窗口。一旦exe完成,控制权就会传回调用C的应用程序。但是,一旦将web应用程序发布到本地IIS,并且将应用程序池标识设置为自定义帐户,则此操作将不再有效。exe在任务管理器中可以作为正在运行的进程查看,但是不会弹出cmd窗口向用户指示它正在运行。try/catch块未捕获任何错误。应用程序池标识没有运行exe的权限。如何确保IIS中的用户可以查看cmd窗口,正

C#代码使用进程。开始运行在运行代码的同一台PC上本地保存的exe。在VisualStudio中,这可以正常工作,调用exe并弹出cmd窗口。一旦exe完成,控制权就会传回调用C的应用程序。但是,一旦将web应用程序发布到本地IIS,并且将应用程序池标识设置为自定义帐户,则此操作将不再有效。exe在任务管理器中可以作为正在运行的进程查看,但是不会弹出cmd窗口向用户指示它正在运行。try/catch块未捕获任何错误。应用程序池标识没有运行exe的权限。如何确保IIS中的用户可以查看cmd窗口,正如在Visual Studio中一样?

出于安全原因,Microsoft不建议从Web应用程序调用.exe,因为w3wp.exe在沙盒环境中运行,因此它启动的任何线程/任务/进程都与您自己启动时的线程/任务/进程不同,因此可能无法按预期工作

您可能希望将控制台应用程序重新编码为ASP.NET Web API(以前称为WCF),可能托管在IIS或Windows服务中


.

我通过使用JavaScript解决了这个问题。我在按钮中添加了一个“OnClientClick”事件,这启动了javascript函数。此函数创建了一个新的ActiveXObject,然后运行该文件。现在可以通过IIS成功执行此操作。

EXE是否以登录到web服务器的用户的身份运行?IIS应用程序池在具有管理员访问权限的自定义用户帐户下运行。正如建议的那样,我还测试了使用同一用户登录到PC,不幸的是,同样的问题仍然存在。此用户没有运行exe的权限。但是exe是否执行它需要执行的操作?为什么需要看到CMD窗口弹出?IIS进程不是交互式进程。Web API不是WCF。它们是完全不同的技术。WebAPI是旧的基于soap的技术的延续。这并没有改变我回答的重点,但感谢你指出新旧对比……好吧,谢谢你的评论,这是一个失望,因为我不太热衷于重写它!。。。很久以前,我做了类似的事情,并让它工作起来:如果它在javascript中运行,那么它可能在客户端而不是服务器上运行。这可能无法在锁定的客户端上运行。