Guest Khanita Posted January 11, 2023 Posted January 11, 2023 One of my customers had a strange issue, whenever they attempted to open the Application Pools node from the IIS Manager GUI, an alert popped up with an error saying "Could not load file or assembly Microsoft.Web.Configuration.AppHostFileProvider" This was a little strange as it did not affect the w3wp process which we generally troubleshoot but instead the inetmgr GUI itself! However, as is the case with all assembly loading errors, Fusion Logging was the much needed light in the dark. This is what I see in the Fusion Logs *** Assembly Binder Log Entry (1/4/2023 @ 10:42:40 AM) *** The operation failed. Bind result: hr = 0x80070002. The system cannot find the file specified. Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll Running under executable C:\windows\system32\inetsrv\InetMgr.exe --- A detailed error log follows. === Pre-bind state information === LOG: User = ********** LOG: DisplayName = Microsoft.Web.Configuration.AppHostFileProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 (Fully-specified)LOG: Appbase = file:///C:/windows/system32/inetsrv/ LOG: Initial PrivatePath = NULL LOG: Dynamic Base = NULL LOG: Cache Base = NULL LOG: AppName = NULL Calling assembly : Microsoft.Web.Management, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35. LOG: This bind starts in default load context. LOG: Using application configuration file: C:\windows\system32\inetsrv\InetMgr.exe.Config LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config. LOG: Post-policy reference: Microsoft.Web.Configuration.AppHostFileProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 LOG: The same bind was seen before, and was failed with hr = 0x80070002. ERR: Unrecoverable error occurred during pre-download check (hr = 0x80070002). As highlighted, it appears that the AppHostFileProvider is accessible initially, however we see that we use InetMgr.exe.config file post which there is a failure. Collecting process monitor logs confirms this, 4:57:18.1457855 PM InetMgr.exe 7652 QueryStandardInformationFile C:\Windows\System32\inetsrv\InetMgr.exe.config SUCCESS AllocationSize: 112, EndOfFile: 110, NumberOfLinks: 1, DeletePending: False, Directory: False Digging in further on my local IIS setup, I found that this particular configuration file is not typically present, however I could see it in the customer's environment. This file is generally present in older versions of IIS and is not currently in use. How it got into the customer's fairly new setup is still a mystery, but it does not appear to be relevant to their hosting criteria. Upon checking this file, I can see the following And it explained everything! It directs the configuration to run under .NET 2.0 instead of 4.0. Hence when we try to access the above DLLs they are not found and even if we place them there .NET 2.0 cannot load them. On a test environment, we confirmed that this configuration file is not needed as suspected. We changed the name to InetMgr.exe.config.old so that it is no longer used. And the issue was resolved! Continue reading... Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.