C# 如何从ASP.NET Web服务启动进程(并允许它做它想做的一切)?
Amazon服务器上安装了一个Web服务。ExposedC# 如何从ASP.NET Web服务启动进程(并允许它做它想做的一切)?,c#,asp.net,web-services,iis-7,C#,Asp.net,Web Services,Iis 7,Amazon服务器上安装了一个Web服务。ExposedWebMethod应该启动一个可执行文件。但是,WebMethod启动的进程(可执行文件)似乎没有完成其工作的权限。如果在本地调用WebMethod(在Amazon VM上使用IE),我可以将一些事件跟踪到路径:C:\\LogFiles上的日志文件中。但是,若从远程机器调用,甚至并没有日志文件。在本地,在我的机器上一切正常。 问题:IIS7中是否有任何方法或设置允许我的Web服务创建可以完成我想做的任何事情的流程?在web.config文件
WebMethod
应该启动一个可执行文件。但是,WebMethod
启动的进程(可执行文件)似乎没有完成其工作的权限。如果在本地调用WebMethod
(在Amazon VM上使用IE),我可以将一些事件跟踪到路径:C:\\LogFiles
上的日志文件中。但是,若从远程机器调用,甚至并没有日志文件。在本地,在我的机器上一切正常。
问题:IIS7中是否有任何方法或设置允许我的Web服务创建可以完成我想做的任何事情的流程?在web.config文件中,我添加了一行:
<identity impersonate="true" userName="USERNAME" password="password"/>
(当然,用户名和密码在文件中的书写是正确的)
此外,我尝试使用非超声处理,正如它所解释的那样,但没有结果。我的进程无法完成它的工作,它甚至无法将操作跟踪到日志文件中。在本地,在我的机器上,一切正常
知道如何将设置或其他更改为IIS7吗
编辑:除了主要问题之外:我的Web服务甚至无法在路径上创建日志文件:
C:\\LogFiles
-虽然它可以在本地启动,但远程没有包含一些字符串的简单日志文件。如何允许它创建简单的文本文件?如果所有其他操作都失败,您可以单独启动此过程并让它等待信号。您可以通过多种方式提供信号-通过IP套接字、邮件槽、命名管道。web服务将向命令管道(或队列)发送请求,“executor”进程将弹出命令,执行它们,并等待更多命令。如果您使用Linux,我将为您提供有史以来最智能的解决方案,设置SUID标志,这在Windows中是不可能的
模拟的问题在于,只要您对服务器计算机有某种控制权,它就会工作,而不仅仅是拥有适当的凭据
您提到了AmazonVM:出于安全原因,我非常确定他们不会允许执行模拟。[添加]或者,更好的是,他们不允许任何人在C:\
选择1
切换到Mono/Linux,使用控制台中的chmod
和rock设置SUID位
选择2
如果您可以以ASP.NET以外的方式运行可执行文件(即,您有一个远程桌面,SSH*)作为特权帐户(注意:特权并不意味着管理员),那么您可以重新设计应用程序,让ASP.NET使用WCF、Web服务或远程处理从守护进程调用服务。但是,在这种情况下,必须重新设计可执行文件,使其成为独立服务器
[添加]如果您的主机提供商不允许您在路径(如C:\
)中写入,而只允许您在主目录下写入,则没有解决方案修复
*它也适用于Windows!!!!我指的是服务器 您应该避免尝试从ASP.NET启动外部进程,因为您的应用程序将在ASP.NET帐户的上下文中运行。(是的,您可以使用模拟启动到另一个帐户,但是,我们不要去那里) 相反,安装一个Windows服务,它可以接收信号*来启动所需的可执行文件 这样做的好处是,您可以自定义服务运行的帐户,而无需在代码中输入密码 (*)信号可通过多种方式实现:
- WCF服务调用(使用由Windows服务承载的WCF服务)
- 监视对已知目录的文件系统更改李>