locked
Runtime Error in App Controller VMM when trying to open Console for a VM RRS feed

  • Question

  • I'm using App Controller with System Center 2012 R2 Virtual Machine Manager (running on the same machine). App Controller is mostly working - I can start, stop, checkpoint VMs etc. When I choose the Console option - to run the AppController equivalent of the Hyper-V Virtual Machine Connection console, I get a Runtime Error saying Server Error in '/' Application. and a warning in the application log saying "A compilation error has occurred" because:

    Could not write to output file 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\ea2d1678\9735edda\App_Web_vmmconsole.aspx.cdcab7d2.zkwddjj8.dll' -- 'Access is denied'

    I've checked that App Controller's Application Pool identity (IIS APPPOOL\.NET v4.5) has full write permission on the directory listed in the event. I even tried it with Everyone Full Control to no avail.

    Can anyone shed any light?

    Full event detail:

    Log Name:      Application
    Source:        ASP.NET 4.0.30319.0
    Date:          01/11/2013 15:22:09
    Event ID:      1310
    Task Category: Web Event
    Level:         Warning
    Keywords:      Classic
    User:          N/A
    Computer:      [**AppControllerFqdn**]
    Description:
    Event code: 3007 
    Event message: A compilation error has occurred. 
    Event time: 01/11/2013 15:22:09 
    Event time (UTC): 01/11/2013 15:22:09 
    Event ID: 9c8defdac202481ca88dd619457025d1 
    Event sequence: 8 
    Event occurrence: 1 
    Event detail code: 0 
     
    Application information: 
        Application domain: /LM/W3SVC/1/ROOT-1-130277929285821158 
        Trust level: Full 
        Application Virtual Path: / 
        Application Path: C:\Program Files\Microsoft System Center 2012 R2\App Controller\wwwroot\ 
        Machine name: [AppControllerComputername] 
     
    Process information: 
        Process ID: 5400 
        Process name: w3wp.exe 
        Account name: IIS APPPOOL\.NET v4.5 
     
    Exception information: 
        Exception type: HttpCompileException 
        Exception message: (0): error CS0016: Could not write to output file 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\ea2d1678\9735edda\App_Web_vmmconsole.aspx.cdcab7d2.zkwddjj8.dll' -- 'Access is denied. '
       at System.Web.Compilation.AssemblyBuilder.Compile()
       at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
       at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
       at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
       at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
       at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp)
       at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
       at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
       at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
    
     
     
    Request information: 
        Request URL: https://[**AppControllerFqdn**]:443/VmmConsole.aspx?platform=HyperV&server=[**HypervFqdn**]&port=2179&vmid=91336486-0CAA-48CC-A41F-C8FB70B778AB&name=[**Vmname**] 
        Request path: /VmmConsole.aspx 
        User host address: fd00:161:876:6606:cd05:8a55:a157:58fb 
        User:  
        Is authenticated: False 
        Authentication Type:  
        Thread account name: IIS APPPOOL\.NET v4.5 
     
    Thread information: 
        Thread ID: 5 
        Thread account name: IIS APPPOOL\.NET v4.5 
        Is impersonating: False 
        Stack trace:    at System.Web.Compilation.AssemblyBuilder.Compile()
       at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
       at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
       at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
       at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
       at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp)
       at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
       at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
       at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
     
     



    Friday, November 1, 2013 3:44 PM

Answers

  • Hi Richard,

    Thanks for the reply.

    The AppController site is running under the .NET 4.5 pool and the api application under the site is running under the AppControllerAppPool. As the warning event is complaining about the IIS APPPOOL\.NET v4.5 account, I thought that the problem was with the site rather than the application.

    As you suggested, I checked the Environment tab for both worker processes in Process Explorer and they were both using C:\Windows\TEMP as their %TEMP%. Checking the permissions on C:\Windows\TEMP revealed a couple of issues:

    1. The IIS_IUSRS group only had Read & List Folder Contents on C:\Windows\TEMP
    2. The IIS APPPOOL\.NET v4.5 user wasn't in the IIS_IUSRS group anyway (although IIS APPPOOL\AppControllerAppPool was)

    SOLUTION

    1. Add the IIS APPPOOL\.NET v4.5 (or whichever pool the AppController site is running under) user to the local IIS_IUSRS group
    2. Grant the local IIS_IUSRS group Modify permission on the system TEMP directory (C:\Windows\TEMP in my case)

    I'm not sure what the minimum permission required is for step 2, but Modify worked for me.

    Now I can't get the ActiveX control to work from my IE10 but that's another problem....

    Thanks for you help Richard.

    • Marked as answer by SystemInsider Tuesday, November 5, 2013 3:43 PM
    Tuesday, November 5, 2013 3:43 PM

All replies

  • Hi SysAdminITL,

    A couple of thoughts:

    1. App Controller typically runs under the AppControllerAppPool.

    You can try changing the Application pool in IIS Manager.

    Under Sites, select AppController and then select api.

    Click the Basic Settings... action, then click Select... and choose AppControllerAppPool

    2. The error itself is likely to be permissions on %TEMP% not allowing the write to occur (or the directory pointed to by %TEMP% does not exist).

    You may find that changing to the AppControllerAppPool resolves the permissions issue. If it doesn't, you can use Process Monitor to see which folder in the file system is causing the Access Denied message and adjust permissions on that folder.

    Kind Regards,

    Richard


    This posting is provided "AS IS" with no warranties, and confers no rights.

    Monday, November 4, 2013 5:36 PM
  • Hi Richard,

    Thanks for the reply.

    The AppController site is running under the .NET 4.5 pool and the api application under the site is running under the AppControllerAppPool. As the warning event is complaining about the IIS APPPOOL\.NET v4.5 account, I thought that the problem was with the site rather than the application.

    As you suggested, I checked the Environment tab for both worker processes in Process Explorer and they were both using C:\Windows\TEMP as their %TEMP%. Checking the permissions on C:\Windows\TEMP revealed a couple of issues:

    1. The IIS_IUSRS group only had Read & List Folder Contents on C:\Windows\TEMP
    2. The IIS APPPOOL\.NET v4.5 user wasn't in the IIS_IUSRS group anyway (although IIS APPPOOL\AppControllerAppPool was)

    SOLUTION

    1. Add the IIS APPPOOL\.NET v4.5 (or whichever pool the AppController site is running under) user to the local IIS_IUSRS group
    2. Grant the local IIS_IUSRS group Modify permission on the system TEMP directory (C:\Windows\TEMP in my case)

    I'm not sure what the minimum permission required is for step 2, but Modify worked for me.

    Now I can't get the ActiveX control to work from my IE10 but that's another problem....

    Thanks for you help Richard.

    • Marked as answer by SystemInsider Tuesday, November 5, 2013 3:43 PM
    Tuesday, November 5, 2013 3:43 PM