【问题标题】:IIS 7.5 w3wp.exe to run another processIIS 7.5 w3wp.exe 运行另一个进程
【发布时间】:2011-09-24 14:51:53
【问题描述】:

我有在 IIS 上运行的 ASP.NET MVC3 应用程序。启动进程“cmd /C git clone some-repo”的控制器操作之一。

我需要确保子进程在已经设置了 git 的用户下运行。我使用带有 Identity == My Account 的应用程序池(管理员 + git 有效)。

进程启动正常,但挂断了。我认为这是因为运行它的身份错误。

有没有人有在 IIS 下启动进程的经验,你见过类似的吗?调试此类问题的方法是什么?

【问题讨论】:

    标签: .net asp.net-mvc git iis


    【解决方案1】:

    我认为您的other question 的解决方案也适用于此。

    像这样将模拟设置为我的用户名后

    <identity impersonate="true" password="o1j2813n" userName="obrad" />
    

    我尝试从 System.Diagnostics.Process.Start 从 mvc 操作运行进程,它们出现在 Windows 任务管理器中我的用户名下,所以我认为 this answer 会有所帮助。

    编辑

    问题的另一部分 - git 不工作是由错误的方式给出 git 命令引起的。我做了一些实验,找到了一种从控制器操作中克隆 git repo 的方法:

    System.Diagnostics.Process.Start(@"C:\Program Files (x86)\Git\bin\git.exe", "clone git://github.com/goranobradovic/go.DB.JournalingBase.git " + @"C:\Users\obrad\Desktop\temp");
    

    此命令将 repo 从 git://github.com/goranobradovic/go.DB.JournalingBase.git 克隆到我桌面上的临时文件夹。

    【讨论】:

    • 即使,如果我这样做 - git 仍然挂断.. 所以这可能是另一个原因。
    • 我有 git,所以稍后试试,现在我有其他事情要做。
    • 我希望相信这一点,但不幸的是在我的 PC 上无法使用.. 你有 windows 7 SP1 吗?
    • 是的,6.1.7601 Service Pack 1 Build 7601。Git 没有出现,但你可以从任务管理器中看到它,文件会在大约一分钟后出现。
    【解决方案2】:

    我怀疑正在发生的事情......

    对于每个用户,您需要接受远程 SSH 服务的公钥。您的进程可能会挂起,等待某人通过键盘输入接受公钥。

    在控制台应用程序中,用户是您并且您已经接受了它。作为 w3wp,密钥尚未被接受 - 永远等待它被接受。

    你有几个选择。

    1. 如果您控制 w3wc 的 AppPool 的身份,您可以以该用户身份登录,并永久接受它自己。您也可以使用PsExec 等工具将进程作为系统或网络服务运行。

    2. 使用 Process.Start 的 different overload 以已接受公钥的其他用户身份启动它。

    【讨论】:

    • 好答案.. 我假设它必须在我的用户下运行,并且已经接受了密钥。而且它以前工作过。我一拿到Win7 SP1就发生了事情
    • 我已经检查过了,确实是 ssh.exe 进程挂了。我现在只是运行 ssh -T git@github.com - 没有成功。诊断问题的任何提示?
    • 你说得对 ssh.exe 我做了更多的分析.. 请看看stackoverflow.com/questions/7666423/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    相关资源
    最近更新 更多