Server 2019 supported for Able Gold

For general questions and discussions specific to the AbleCommerce GOLD ASP.Net shopping cart software.
Post Reply
User avatar
AbleMods
Master Yoda
Master Yoda
Posts: 5170
Joined: Wed Sep 26, 2007 5:47 am
Location: Fort Myers, Florida USA

Server 2019 supported for Able Gold

Post by AbleMods » Tue Jul 16, 2019 7:55 am

I'm getting binding mismatch errors on System.Web.Mvc trying to light up a Gold R12 install on Server 2019. Has anyone gotten Gold to run on 2019?
=== Pre-bind state information ===
LOG: DisplayName = System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
(Fully-specified)
LOG: Appbase = file:///c:/Web Sites/<sitefolder>/httpdocs/
LOG: Initial PrivatePath = c:\Web Sites\<sitefolder>\httpdocs\bin
Calling assembly : CommerceBuilder.WebApi, Version=7.92.6513.13169, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\Web Sites\<sitefolder>\httpdocs\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 4.0.0.0 redirected to 4.0.0.0.
LOG: Post-policy reference: System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/9becd747/4c86a20a/System.Web.Mvc.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/9becd747/4c86a20a/System.Web.Mvc/System.Web.Mvc.DLL.
LOG: Attempting download of new URL file:///c:/Web Sites/<sitefolder>/httpdocs/bin/System.Web.Mvc.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Revision Number
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
Joe Payne
AbleCommerce Custom Programming and Modules http://www.AbleMods.com/
AbleCommerce Hosting http://www.AbleModsHosting.com/
Precise Fishing and Hunting Time Tables http://www.Solunar.com

User avatar
AbleMods
Master Yoda
Master Yoda
Posts: 5170
Joined: Wed Sep 26, 2007 5:47 am
Location: Fort Myers, Florida USA

Re: Server 2019 supported for Able Gold

Post by AbleMods » Tue Jul 16, 2019 8:17 am

Never mind, figured it out. Sigh I swear all I need to is post the question and 30 seconds later I suddenly figure something out :roll:

For those who run into runtime binding errors, here's what I do to help narrow down the issue:

First, the exact error was:
Could not load file or assembly 'System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Next, I enabled all the Fusion Log registry entries by adding the following entries:
Within HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion

Add:
DWORD ForceLog set value to 1
DWORD LogFailures set value to 1
DWORD LogResourceBinds set value to 1
DWORD EnableLog set value to 1
String LogPath set value to folder for logs (e.g. C:\FusionLog\)
Make sure you create a C:\FusionLog\ folder too.

Then restart IIS. Now hit the site with your browser. You'll get a much more detailed account of the binding error(s). In my case, I needed to open the C:\FusionLog\Default\<someweirdnumber>\ folder and find the assembly binder log file for the System.Web.Mvc file. Open it with your text editor.

Again, in my log I found this entry:
LOG: Redirect found in application configuration file: 4.0.0.0 redirected to 4.0.0.0.
LOG: Post-policy reference: System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
That tells me the CLR correctly identified my Assembly Binding Redirect specified in the web.config. However, I find this a few lines later:
LOG: Attempting download of new URL file:///c:/Web Sites/<clientname>/httpdocs/bin/System.Web.Mvc.DLL.
LOG: Assembly download was successful. Attempting setup of file: c:\Web Sites\<clientname>\httpdocs\bin\System.Web.Mvc.dll
LOG: Entering download cache setup phase.
LOG: Assembly Name is: System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35
WRN: Comparing the assembly name resulted in the mismatch: Revision Number
ERR: The assembly reference did not match the assembly definition found.
Notice how the system FOUND a System.Web.Mvc assembly, but the version is 4.0.0.1. The binding redirects in web.config are forcing only up to 4.0.0.0 as shown here from my web.config file:
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
So the solution becomes simple. Change the bindingRedirect to include the slightly newer revision number 4.0.0.1 like this:
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
</dependentAssembly>
And now the site spins up.

Be sure to remove the registry entries for logging and restart IIS when you're done. I'm still not sure why this was not an issue on Server 2016, but that's a battle for another day.
Joe Payne
AbleCommerce Custom Programming and Modules http://www.AbleMods.com/
AbleCommerce Hosting http://www.AbleModsHosting.com/
Precise Fishing and Hunting Time Tables http://www.Solunar.com

Post Reply