• 0

Software won't run on Server 2016 - .NET Runtime Error


Question

I have a WD Sentinel DS server. It's an x86 NAS from WD - it comes with Server 2012R2 by default and a few other addons. I'm looking to update it to 2016, but I get an issue with a single addon - unfortunately it's one I would require to work. This addon adds AFP support, which means I can use it for TimeMachine on my OS X clients natively.

Although the addon is WD packaged, it looks like it was originally developed by Extremez-IP - a company which has since been bought out and there's not going to be an update released.

 

I can try to start the service, but a few seconds later it's stopped running and I get a few messages in the event log. Event 1026, .NET Runtime.

  Quote

 

Application: WDAfpSupport.exe

Framework Version: v4.0.30319

Description: The process was terminated due to an unhandled exception.

Exception Info: System.IO.FileNotFoundException

   at WDAfpSupport.WDAfpSupportService.IsEZIPInstalled(System.String ByRef)

   at WDAfpSupport.WDAfpSupportService.MonitorMacAccess()

   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)

   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)

   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)

   at System.Threading.ThreadHelper.ThreadStart()


 

Expand  

And the XML view:

  Quote

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 

+ <System> 

<Provider Name=".NET Runtime" /> 

<EventID Qualifiers="0">1026</EventID> 

<Level>2</Level> 

<Task>0</Task> 

<Keywords>0x80000000000000</Keywords> 

<TimeCreated SystemTime="2018-01-14T14:26:25.946371600Z" /> 

<EventRecordID>608</EventRecordID> 

<Channel>Application</Channel> 

<Computer>TESTServer.TEST.local</Computer> 

<Security /> 

</System> 

+ <EventData> 

<Data>Application: WDAfpSupport.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.IO.FileNotFoundException at WDAfpSupport.WDAfpSupportService.IsEZIPInstalled(System.String ByRef) at WDAfpSupport.WDAfpSupportService.MonitorMacAccess() at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Threading.ThreadHelper.ThreadStart()</Data> 

</EventData> 

</Event>

Expand  

Am I right in thinking I'm pretty much SOL here, and this could only be rectified by the original developers? I have tried to install all additional .NET components but I still don't get any luck in my test environment. 

 

Not only has the original developed been removed from the equation, but WD has dropped all support for this unit too. If anyone is particularly interested, I've put a copy of the AFP addon installer here: https://www.dropbox.com/s/cp0qgo6wgpzf6l4/WDAfpSupportSetup.msi?dl=0

7 answers to this question

Recommended Posts

  • 0

Yes - the dropbox link is the original installer msi file provided by WD. I've got the full recovery suite for this unit and that wim file includes all the original installers.

 

Regardless of whether I do a clean install or 2016, or upgrade 2012R2 the same fault occurs with this software.

  • 0

its not looking for an old .net thats not supplied is it?

 

2.5 or equiv, that was a ballache to install on 2k12, suspect much the same on 2k16. from memory MS guidance to install it doesnt work.  Struggling to remember how i managed to force it onto 2k12 though.

  • 0
  On 15/01/2018 at 13:19, Mando said:

its not looking for an old .net thats not supplied is it?

 

2.5 or equiv, that was a ballache to install on 2k12, suspect much the same on 2k16. from memory MS guidance to install it doesnt work.  Struggling to remember how i managed to force it onto 2k12 though.

Expand  

I don't think it is. On the standard 2012R2 (out of the WD factory) only .NET 4.5 is installed and it works as-is. This is the same as 2016 - I've even added the older .NET features using Server Manager on 2016 and it's still a no-go.

 

Is there any sort of debugging software that could work just from the binary (as no source code is available?). The XML suggests there's a file missing "Exception Info: System.IO.FileNotFoundException" but I've no experience at this whatsoever.

  • 0
  On 15/01/2018 at 13:29, Biohead said:

I don't think it is. On the standard 2012R2 (out of the WD factory) only .NET 4.5 is installed and it works as-is. This is the same as 2016 - I've even added the older .NET features using Server Manager on 2016 and it's still a no-go.

 

Is there any sort of debugging software that could work just from the binary (as no source code is available?). The XML suggests there's a file missing "Exception Info: System.IO.FileNotFoundException" but I've no experience at this whatsoever.

Expand  

hmm probs not that then.

 

and TBH no not really, if the vendor doesnt support it due to EOL or compatiblity reasons, id be walking away, i cant use bodges in a production environment sadly.

 

are there positive reasons for migrating from 2k12 r2 to 2016? I cant think of any, but im not on the coal face as it were.

  • 0

This may be a bit advanced but you could try to open the program in ILSpy and look for WDAfpSupport.WDAfpSupportService.IsEZIPInstalled(System.String ByRef) and try to see what it is looking for that is causing a FileNotFoundException.

 

Examples could be a FileInfo object that is initialized and then they call a method on that object without checking whether it exists, causing an unhandled exception. This won't fix your error but what it will do is potentially lead you to what is causing it and potentially, how to fix it.

 

It seems its looking to see if EZ IP is installed, whatever that is. Possibly another component.

  • 0

That's a really useful tool - it's been able to show me a lot more than I was expecting!


Just to try and clear things up, ExtremeZIP software was taken by Western Digital, and packaged up by them to create an OEM version they included with this server. It really does work well for AFP file sharing which is why I'd like to see if this is fixable. 2016 doesn't add that much so happy to stay with 2012R2, but it does have a few more Storage Pool capabilities... plus who doesn't like tinkering?!

 

It results in two services being installed, WDAFPSupport and ExtremeZIP (EZIP). It looks like the WDAFPSupport service is what controls this EZIP service (when to turn it on, what shares it should be accessing etc). If I run that service manually, it has it's own logfiles and there's nothing in them at all which would be unexpected. The EZIP service will stay started once it's manually done - it's the WDAFPSupport service which is the issue. 

 

I've been able to find the two sections in the WDAFPSupport.exe which are shown in the event log by using ILSpy and pasted them below.

 

I've also seen an info entry in the Application Log which I missed first time... although it looks like exception code 0xe0434352 is just the generic .NET fault code and doesn't help much in this case

  Quote

Faulting application name: WDAfpSupport.exe, version: 2.1.0.0, time stamp: 0x5355864e
Faulting module name: KERNELBASE.dll, version: 10.0.14393.321, time stamp: 0x57f4c4f0
Exception code: 0xe0434352
Fault offset: 0x0000000000017788
Faulting process id: 0x7b8
Faulting application start time: 0x01d38e39051c5619
Faulting application path: c:\Program Files\Western Digital\Western Digital AFP Support Service\WDAfpSupport.exe
Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll
Report Id: f589232e-d508-43d7-8bed-a8185e341c5a
Faulting package full name:
Faulting package-relative application ID:

Expand  

 

In the case if the first section, it's referring to a string (A82379D3-E734-47B7-80F9-81A11CDFCD81) and I'm not sure what this relates to. I've tried searching the registry for it in 2012R2 and I can't find it, so I'm not sure where I should be looking - if at all. I'm not really sure where else it could be referring to a file which doesn't exist.

 

WDAfpSupport.WDAfpSupportService.IsEZIPInstalled(System.String ByRef)

private bool IsEZIPInstalled(out string version)
		{
			version = string.Empty;
			if (!string.IsNullOrEmpty("{A82379D3-E734-47B7-80F9-81A11CDFCD81}"))
			{
				try
				{
					foreach (ProductInstallation current in ProductInstallation.GetRelatedProducts("{A82379D3-E734-47B7-80F9-81A11CDFCD81}"))
					{
						if (current != null)
						{
							version = current.get_ProductVersion().ToString();
							break;
						}
					}
				}
				catch (SystemException ex)
				{
					Logger.Info(Logger.EventType.EVENT_AFP, "Exception when checking for installed version of ExtremeZ-IP: {0}", new object[]
					{
						ex.ToString()
					});
					version = string.Empty;
				}
			}
			return !string.IsNullOrEmpty(version);
		}

WDAfpSupport.WDAfpSupportService.MonitorMacAccess()

// WDAfpSupport.WDAfpSupportService
private void MonitorMacAccess()
{
	this.alertManager = AlertManager.GetInstance();
	this.GetIpSubnet();
	Thread.Sleep(10000);
	this.serialNumber = this.GetSerialNumber();
	this.modelDisplayName = this.GetModelDisplayName();
	string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
	string fileName = baseDirectory + "ExtremeZ-IP Installer.exe";
	FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(fileName);
	this.productVersion = versionInfo.ProductVersion;
	Logger.Info(Logger.EventType.EVENT_AFP, "Latest ExtremeZ-IP version is {0}", new object[]
	{
		this.productVersion
	});
	bool flag = this.IsEZIPInstalled(out this.installedVersion);
	if (flag)
	{
		this.alertManager.Clear("WDAfpSupportDAFPFailedActivation");
		this.alertManager.Clear("WDAfpSupportDAFPFailedInstallation");
		if (this.installedVersion.CompareTo(this.productVersion) < 0)
		{
			Logger.Info(Logger.EventType.EVENT_AFP, "ExtremeZ-IP version {0} has been previously installed.  Updating to version {1}.", new object[]
			{
				this.installedVersion,
				this.productVersion
			});
			flag = this.InstallEZIP();
		}
		else
		{
			Logger.Info(Logger.EventType.EVENT_AFP, "ExtremeZ-IP version {0} has been previously installed.", new object[]
			{
				this.installedVersion
			});
		}
	}
	if (!flag)
	{
		this.CreateDevicesManager();
		while (!this.activationRequestAccepted)
		{
			WDAfpSupportService.monitorMacAccessThreadEvent.WaitOne();
			bool flag2 = false;
			foreach (DeviceInfo current in WDAfpSupportService.devices)
			{
				OperatingSystemProperty operatingSystem = current.get_OperatingSystem();
				if (operatingSystem != null)
				{
					string text = operatingSystem.get_OSName().ToUpper();
					if (text.Contains("MAC OS X"))
					{
						Logger.Info(Logger.EventType.EVENT_AFP, "Device Name = {0}, Description = {1}, Id = {2}, OS Name = {3}, OS = {4}", new object[]
						{
							current.get_DeviceName(),
							current.get_Description(),
							current.get_DeviceId(),
							operatingSystem.get_OSName(),
							operatingSystem.ToString()
						});
						Logger.Info(Logger.EventType.EVENT_AFP, "A Mac client has been detected", new object[0]);
						flag2 = true;
						break;
					}
				}
			}
			if (flag2)
			{
				this.activationRequestAccepted = this.SendActivationRequest();
			}
		}
		this.RemoveDevicesManager();
		flag = this.InstallEZIP();
	}
	if (flag)
	{
		bool flag3 = this.StartEZIPService();
		if (flag3)
		{
			if (!this.isTimeMachineVolumeAlreadyCreated())
			{
				this.CreateTimeMachineVolume();
				return;
			}
		}
		else
		{
			Logger.Error(Logger.EventType.EVENT_AFP, "Unable to start AFP service.  Time Machine share \"{0}\" can not be created or accessed.", new object[]
			{
				"Time Machine"
			});
			this.alertManager.Raise("WDAfpSupportDAFPFailedTimeMachineCreation", Alerts.WDAFPFailedTimeMachineCreationDescription);
		}
	}
}

 

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.