• 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.
  • Posts

    • Wish you could set the WiFi country without setting an SSID. This would stop the warning on every boot.
    • Huawei's Mate XT successor launches this year with a performance and camera boost by Hamid Ganji Last year, Huawei reimagined our perception of folding smartphones by launching the world's first tri-folding device, Mate XT. Contrary to regular folding smartphones like the Samsung Galaxy Z Fold 6, the Huawei Mate XT utilizes a dual-hinge mechanism that allows the device to fold into a "Z" shape. The success of the Mate XT has allegedly prompted Huawei to release a sequel this year. Chinese tipster Digital Chat Station on Weibo says Huawei will release a successor in the second half of 2025. While the folding and screen solution remain unchanged, the tipster claims the second-generation Mate XT gets a faster processor and upgraded camera setup. Digital Chat Station says Huawei will also improve the device's accessories. Last year's Mate XT included an Aramid Fiber Case with an integrated rotating stand in the box as official accessories. Though the tipster doesn't mention quality improvements, Huawei could reinforce the phone's folding endurance. As for the release date, the first-generation Mate XT was released in September 2024, and the Mate XT 2 might also be released at the same time. Interestingly, Huawei announced its Mate XT, the world's first tri-folding device, on September 10 last year, just one day after Apple announced its iPhone 16 series. If Huawei wants to tease Apple again, we can expect the Mate XT 2 to drop simultaneously with the iPhone 17 series. While these devices are not in the same category, Huawei's rivalry with Apple is common knowledge. Tri-folding smartphones provide bigger screens at a more compact size compared to tablets. For example, the Huawei Mate XT has a screen size of 10.2 inches when it's fully open and 7.9 inches when folded once. Also, when you fold it twice, you get a 6.4-inch screen like regular smartphones. Huawei is now the biggest contender in the tri-folding segment, but Samsung may also join the race with a tri-fold version of its Galaxy Fold devices.
    • You can now measure internet speed and download videos using PowerToys Run by Taras Buria PowerToys Run is among my favorite modules, which I use daily (some of them should be integrated into Windows 11). This powerful utility is great for finding stuff, launching apps, navigating the web, and a lot more. Third-party modules help expand PowerToys Run's functionality and add additional capabilities like controlling Spotify, asking ChatGPT, and more. Now, there are three new modules you may find useful: speed test, video downloader, and vocabulary. The SpeedTest module uses Ookla Speedtest CLI for local execution without third-party tracking or ads. It has a modern, theme-aware user interface, and runs with a single command: just open Run and type spt to measure your internet connection speed. The result will show up in a new window with the ability to copy the result URL. The module also supports x64 and ARM systems. The VideoDownloader plugin lets you download videos from YouTube and other websites. You can specify the video quality and format (audio-only, for example) and select where to save the video. To make it work, open PowerToys Run, type dl and add a video URL. Finally, the Definition plugin from the same developer works as a powerful vocabulary that offers word definitions, word pronunciations, phonetics and synonyms, usage examples, and more. Note that these modules are not available in PowerToys out of the box. You need to download them from GitHub and install them manually. Here is how to do that: Download SpeedTest, VideoDownloader, or Definition plugins from their GitHub repositories. Extract downloaded plugins into %LOCALAPPDATA%\Microsoft\PowerToys\PowerToys Run\Plugins\ Open PowerToys Run (Alt + Space is the default shortcut) and launch plugins using their corresponding shortcuts (spt, dl, or def, all three can be customized in settings). You can also configure plugins in PowerToys Run settings. You can find more third-party modules for PowerToys Run on GitHub.
    • Showing people how to self host their own media is harmful, according to YouTube by David Uzondu YouTube has taken down a video from tech creator Jeff Geerling that demonstrated how to use LibreELEC, a lightweight operating system for turning devices into media centers, on a Raspberry Pi 5 for 4K video playback. The video, titled "I replaced my Apple TV—with a Raspberry Pi", originally published in May 2024, was removed in June 2025 under YouTube's "Harmful or dangerous content" policy. According to the violation notice, YouTube claimed the video showed "how to get unauthorized or free access to audio or audiovisual content, software, subscription services, or games that usually require payment." Image via Jeff Geerling Geerling strongly refuted YouTube's claims. He stated clearly, "I purposefully avoid demonstrating any of the tools that are popularly used to circumvent purchasing movie, TV, and other media content." He also emphasized that his own Network Attached Storage, or NAS, contains only legally acquired content. This isn't Geerling's first run-in with YouTube over self-hosted media tools. Last October, his tutorial titled "Better than Disney+: Jellyfin on my NAS" was hit with a similar strike for showing how to set up Jellyfin, an open source media server for organizing and streaming personal media. That strike was quickly overturned after an appeal. But this time, YouTube rejected his appeal, even though the LibreELEC video had been live for over a year, had racked up over half a million views, and contained no promotion of anything illegal. This whole thing feels a lot like what happened with youtube-dl. It's a simple command-line tool for downloading videos, used by tons of people for perfectly legal reasons like saving public domain content or backing up their own uploads. But that didn't stop the RIAA from hitting it with a DMCA takedown on GitHub, calling it a piracy tool. The community pushed back hard, and eventually it was brought back, thanks in part to support from groups like the Electronic Frontier Foundation who pointed out that not everything that can be misused is automatically bad. Side note, the youtube-dl project appears to be unmaintained (the last release was in 2021), if you're looking for an alternative, consider its very popular fork, yt-dlp. After the appeal was rejected, YouTube required Geerling to complete "policy training" to avoid a more serious, permanent strike on his channel. He eventually gave in and took the training. Anyways, if you're interested, he has uploaded the removed LibreELEC video to Internet Archive for anyone to watch.
    • Thanks to Herr Musk being a total poison pill, they can't even give those pieces of scrap away.  They can't even ship them to the UK/EU because they're completely illegal over here.  
  • Recent Achievements

    • Week One Done
      luxoxfurniture earned a badge
      Week One Done
    • First Post
      Uranus_enjoyer earned a badge
      First Post
    • Week One Done
      Uranus_enjoyer earned a badge
      Week One Done
    • Week One Done
      jfam earned a badge
      Week One Done
    • First Post
      survivor303 earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      438
    2. 2
      +FloatingFatMan
      244
    3. 3
      snowy owl
      223
    4. 4
      ATLien_0
      212
    5. 5
      Xenon
      152
  • Tell a friend

    Love Neowin? Tell a friend!