2012-08-31 31 views
1

我有一個asp.net mvc 4應用程序,它具有Process.Start()調用控制檯應用程序(用C++編寫)。Process.Start從ASP.NET

問題是控制檯應用程序不能從asp.net應用程序(它從一個站點生成圖像,並且圖像全是白色)適當地運行。

當我從控制檯應用程序使用相同的調用時,它可以很好地工作。

正如我所見,它應該是特權問題。

我不確定ASP.NET是否運行在同一用戶 但我看到here它運行在我的用戶帳戶(這是admninistrator),所以它真的很奇怪。

事情我已經嘗試:

  1. process.StartInfo.UseShellExecute =真/假。

  2. process.StartInfo.UserName和administrator用戶的密碼。

  3. 編輯在C IIS配置文件:\用戶\ MYUSER \文檔\ IISExpress \ CONFIG \對ApplicationHost.config 更改:

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

    到:

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

    因此,如果匿名請求將以 進程的身份執行,並且該進程沒有權限,則顯式的 用戶將用於匿名身份驗證。 Taken From Here

感謝您的幫助!

回答

0

退房節上的「模擬特定用戶的代碼」

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

冒充指定的用戶後,您應該能夠從你的代碼作出的Process.Start呼叫和過程將使用該身份創建。該過程啓動後,您應該調用「impersonationContext.Undo()」將用戶身份返回到應用程序池標識。

如果您使用其他方法從ASP.NET內模擬用戶,則整個應用程序將具有提升的權限。最好將這些提升的權限限制在這個過程中。