1

我有一个 asp.net mvc 4 应用程序,它具有对控制台应用程序的 Process.Start() 调用(用 C++ 编写)。

问题是控制台应用程序不能从 asp.net 应用程序正确运行(它从站点生成图像,并且图像全是白色的)。

当我从控制台应用程序使用相同的调用时,它可以完美运行。

在我看来,这应该是权限问题。

我不确定 ASP.NET 是否从同一个用户运行,但我在这里看到它在我的用户帐户(管理员)下运行,所以这真的很奇怪。

我尝试过的事情:

  1. process.StartInfo.UseShellExecute = true/false。

  2. process.StartInfo.UserName 和管理员用户的密码。

  3. 编辑 C:\Users\MyUser\Documents\IISExpress\config\applicationhost.config 中的 IIS 配置文件:

    <applicationPoolDefaults managedRuntimeLoader="v4.0" >
        <processModel/>
    </applicationPoolDefaults>
    

    至:

        <applicationPoolDefaults managedRuntimeLoader="v4.0" >
            <processModel userName="administrator username" password="administrator password"/>
        </applicationPoolDefaults>
    

    因此,如果匿名请求将以进程的身份执行,并且进程没有权限,则将使用显式用户进行匿名身份验证。取自这里

谢谢您的帮助!

4

1 回答 1

0

查看“在代码中模拟特定用户”部分

http://support.microsoft.com/kb/306158#4

在模拟指定用户后,您应该能够从您的代码中调用 Process.Start,并且将使用该身份创建进程。流程启动后,您应该调用“impersonationContext.Undo()”将用户身份返回给 App Pool Identity。

如果您使用另一种方法从 ASP.NET 中模拟用户,则整个应用程序将具有提升的权限。最好将这些提升的权限限制在此过程中。

于 2012-09-07T01:46:39.787 回答