Installing Skype for Business Server 2015 Core Components causes ZervicePoint to stop working
Problem
After installing Skype for Business Server 2015 Core Components on the same server as ZervicePoint, you receive a server error when trying to browse to ZervicePoint.
The reason for this is that Skype for Business Server 2015 Core Components installs an assembly, Newtonsoft.json.dll in the Global Assembly Cache, this assembly is also used by ZervicePoint but the one installed in the GAC is of an older version which causes ZervicePoint to stop working.
The following event log error may also appear
Exception
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 5/16/2018 11:56:51 PM
Event time (UTC): 5/16/2018 9:56:51 PM
Event ID: 26d734db88914c6a951ef29abfd685c1
Event sequence: 4
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/7/ROOT-2-131709814029467043
Trust level: Full
Application Virtual Path: /
Application Path: C:\Program Files\Zipper\ZervicePoint\Web\WebApi\
Machine name: LOCALHOST
Process information:
Process ID: 4876
Process name: w3wp.exe
Account name: DOMAIN\ServiceAccount
Exception information:
Exception type: HttpException
Exception message: Method not found: 'Void Newtonsoft.Json.JsonSerializerSettings.set_StringEscapeHandling(Newtonsoft.Json.StringEscapeHandling)'.
at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
Method not found: 'Void Newtonsoft.Json.JsonSerializerSettings.set_StringEscapeHandling(Newtonsoft.Json.StringEscapeHandling)'.
at System.Web.Mvc.JsonHelper.JsonSerialize(Object o, Boolean ignoreReferenceLoops, JsonConverter[] converters)
at Zipper.ZervicePoint.Common.Web.Globalization.SiteLocalizationManager.RefreshTranslationsHash()
at Zipper.ZervicePoint.WebApi.WebApiConfig.RegisterSite()
at Zipper.ZervicePoint.WebApi.WebApiConfig.Register(HttpConfiguration config)
at Zipper.ZervicePoint.WebApi.WebApiApplication.Application_Start()
Request information:
Request URL: https://zervicepoint.dev.local:30000/Store/api/process
Request path: /Store/api/process
User host address: 10.2.61.107
User:
Is authenticated: False
Authentication Type:
Thread account name: DOMAIN\ServiceAccount
Thread information:
Thread ID: 9
Thread account name: DOMAIN\ServiceAccount
Is impersonating: False
Stack trace:
at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
Custom event details:
Solution
- Locate Newtonsoft.json.dll in the GAC (C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Newtonsoft.Json), should be version 4.5.6.14930.
- Backup Newtonsoft.json.dll to another location
- Locate the Newtonsoft.json.dll used by ZervicePoint, you can find it for example in C:\Program Files\Zipper\ZervicePoint\Web\UserWeb\Bin\Newtonsoft.Json.dll, should be version 5.0.6.16206.
- Replace the Newtonsoft.json.dll in the GAC with the one used by ZervicePoint
- Restart the IIS Worker process
- Open a command prompt and run IISReset