在 ASP.NET 中以不同用户身份启动进程

Posted

技术标签:

【中文标题】在 ASP.NET 中以不同用户身份启动进程【英文标题】:Starting a Process as a Different User in ASP.NET 【发布时间】:2009-10-13 18:17:15 【问题描述】:

我有一个 ASP.NET MVC Web 应用程序,并且我想在其中一个控制器操作中启动进程(exe 文件)。该进程需要在域用户下运行,因为它访问域上的其他资源。这可以是单个硬编码用户,也可以是当前在网页上的用户。 web.config 正在使用 Windows 身份验证。

我已尝试打开模拟并尝试在指定特定用户时打开模拟。这两种情况都会导致权限问题。

我也尝试以特定域/用户/密码启动该进程,但这会给我一个错误“登录失败:未知用户名或密码错误”。我很肯定用户名/密码是正确的,并且执行“runas”工作正常。

我什至不确定执行此操作的“正确”方法。任何帮助表示赞赏。

谢谢。

【问题讨论】:

【参考方案1】:

正确的方法是不要从 Web 应用程序启动进程。请改用MSMQ in WCF 之类的东西。

【讨论】:

好的,所以将一些信息推入 MSMQ,然后使用以用户身份运行的服务将其提取出来...我可以创建一个 WCF 服务来完成exe目前正在做。我希望不必有一个完整的其他服务来做到这一点。也许这是最好的方式。 做起来应该不会太难。如果您有 Windows Server 2008,您可以使用 WAS-msdn.microsoft.com/en-us/library/ms734677.aspx 托管服务。编写 Windows 服务实际上并没有那么多工作——我用不到 10 分钟的时间将控制台 WCF 服务转换为 Windows 服务(我只有 Windows 2003)。 我要将我的 exe 代码移动到以域用户身份启动的 WCF 服务中,看看是否效果更好。 将其作为托管在 Windows 服务中的 WCF 服务进行,效果很好。我只是将 Windows 服务启动用户设置为域帐户。

以上是关于在 ASP.NET 中以不同用户身份启动进程的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 2.0 中的模拟

如何在 Docker 容器中以非 root 用户身份启动 cron?

在 Ubuntu 中以 root 用户身份启动 Qt 应用程序

如何在 IntelliJ 中以不同用户身份运行 JAR 应用程序?

从 ASP.NET 启动进程 - 为啥进程会立即终止?

Asp Net Core 身份验证问题