Article published on the 1st of October 2019.
Access the OWS config file for your SharePoint Version on every server in your farm, except the SQL and Mail server.
Paths for these files are:
- SharePoint 2013: C:\Program Files\Common Files\Microsoft Shared\web server extensions\15\BIN\OWSTIMER.EXE.config
- SharePoint 2016: C:\Program Files\Common Files\Microsoft Shared\web server extensions\16\BIN\OWSTIMER.EXE.config
A standard config will look something like this, but it might very well have more sections etc. depending on your setup:
These will need to be modified this if there is no <assemblyIdentity> for newtonsoft. (See code block below)
If the runtime section does not already have a <assemblyBinding> section within the runtime section, you will need to add it along with the dependentAssembly for newtonsoft.
If there already is a <assemblyBinding> but no <dependentAssembly> for newtonsoft, only add the <dependentAssembly> section for newtonsoft.
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-18.104.22.168" newVersion="22.214.171.124" /> </dependentAssembly> </assemblyBinding>.
The final result would look something like this on a standard config file (again this might be slightly different depending on your setup, you only need to note the sections that contain child sections with the Newtonsoft assembly
After you have added the section, you will need to restart your SharePoint Timer Service, by running the SharePoint Powershell command: Restart-Service "SPTimerV4" or restarting the service in services.msc