我有一个asp.net mvc 4应用程序,它有对控制台应用程序的Process.Start()调用(用c ++编写)。
问题是控制台应用程序无法从asp.net应用程序运行(它从站点生成图像,图像全白)。
当我使用来自控制台应用程序的相同调用时,它可以很好地工作。
我认为应该是特权问题。
我不确定ASP.NET是否来自同一个用户, 但我看到here它在我的用户帐户(这是管理员)下运行,所以这真的很奇怪。
我尝试过的事情:
process.StartInfo.UseShellExecute = true / false。
process.StartInfo.UserName和管理员用户的密码。
在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>
所以如果匿名请求将以。的身份执行 进程,并且进程没有特权,显式 用户将用于匿名身份验证。 Taken From Here
感谢您的帮助!
答案 0 :(得分:0)
查看“在代码中模拟特定用户”部分
http://support.microsoft.com/kb/306158#4
您可以在模拟指定用户后从代码中调用Process.Start,并使用该标识创建进程。进程启动后,您应该调用“impersonationContext.Undo()”将用户身份返回给App Pool Identity。
如果您使用其他方法在ASP.NET中模拟用户,则整个应用程序将具有提升的权限。最好将这些提升的权限限制为此过程。