Hide this message
Looking to compare latest NPM features with previous versions of NPM?
The NPM new feature summary offers a comparison of new features and improvements offered with this release.
This article applies to all modules contained within the Orion and when the hotfix applied is a replacement of files rather than a .msp or .exe installer.
In such instances, a module or the web console itself may not load proplerly after the hotfix is applied. The errors being seen can range from being unable to talk to a selected engine, resources failing to render, the website failing to load, etc. However, the businesslayer related logs will typically show examples of the following (gathered from the BusinessLayerHost.log):
2016-04-25 12:50:08,832  ERROR SolarWinds.BusinessLayerHost.PluginManager - Plugin "SolarWinds.UDT.BusinessLayer, Version=18.104.22.16812, Culture=neutral, PublicKeyToken=null" creation failed.
System.IO.FileNotFoundException: Could not load file or assembly 'SolarWinds.BusinessLayerHost.Contract, Version=2015.1.35100.9209, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'SolarWinds.BusinessLayerHost.Contract, Version=2015.1.35100.9209, Culture=neutral, PublicKeyToken=null'
2016-04-25 12:50:08,824  ERROR SolarWinds.BusinessLayerHost.PluginManager - Plugin "D:\Program Files (x86)\SolarWinds\Orion\Toolset\SolarWinds.Toolset.BusinessLayer.dll_SSL" could not be loaded correctly
System.IO.FileNotFoundException: Could not load file or assembly 'file:///D:\Program Files (x86)\SolarWinds\Orion\Toolset\SolarWinds.Toolset.BusinessLayer.dll_SSL' or one of its dependencies. The system cannot find the file specified.
File name: 'file:///D:\Program Files (x86)\SolarWinds\Orion\Toolset\SolarWinds.Toolset.BusinessLayer.dll_SSL'
As per the 2 examples above, the Module Engine Service is attempting to load the module plugins, but it cannot find or load files necessary to load. The files in question may be specifically called out or may be given a broader definition, but the same issue remains: the file could not be found or loaded.
The reason for the errors and problems such is this is because of the way the hotfix was applied. In the case of non .msp or .exe installs and where the .config and\ or .dll files have to be manually replaced, what is done with the OLD files will determine how the system loads.
Each plugin goes into its respective install directory to start up by loading the .dlls it has and the configurations for those. If the replaced files still exist in some form or other, then 1 or more of the 4 possible causes will cause the issue:
1. The file was replaced and renamed into an improper format. Example: A hotfix calls for the file solarwinds.orion.core.businesslayer.dll to be replaced. The existing file is renamed to have the extension of .dll.old rather than .old. When the plugin loads, it finds the file and still see's that the .dll exists and attempts to load it, but cannot do so.
2. The new .dll file placed on the server is Blocked by the operating system and will not be allowed to load because it is not trusted.
3. The replaced files are stored in a custom created directory in the same directory as the original file or created in a directory above it. When such an action occurs, the loading Module Engine service will find the backed up files first and load them in that directory incorrectly. Example would be taking the replaced .dlls and adding them to a custom directory like so Program Files (x86)\SolarWinds\Orion\Backup Files.
4. The file is actually missing from the installed directory.
General recommendation for the above causes is to take the replaced files, rename the extension to .OLD and move them all to a directory outside of Program Files (x86). Doing so will prevent any instances where the files may have been loaded in the incorrect order.
For any Blocked .dlls, you have the following 2 options to resolve the issue:
To unblock multiple dlls at once, you can conduct the following steps as well:
The above steps is a way to unblock all the files by having Windows trust them automatically. When the Windows operating system compresses content on the drive, whether it is trusted or not, it automatically unblocks all the content. Once it is extracted back out, the .dlls will all be trusted by the OS as it was the one that conducted the compression.