<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel><title>Sum None</title>
<description>Totally nothing.</description>
<generator>Miniblog.Core</generator>
<link>http://www.sumnone.com/</link>
<item>
  <title>Remove then Add aspNetCore Handlers to Run As Virtual Application</title>
  <link>http://www.sumnone.com/blog/remove-add-aspnetcore-handler-run-as-virtual-application/</link>
  <description>&lt;p&gt;I was trying to solve this issue over the last days and had already come up with a workaround. However, as I started to move onto something else, the permanent solution just jumped in my lap.&lt;/p&gt;
&lt;p&gt;I've been trying to get Miniblog.Core to run as a virtual app. The first error barely mentioned in my last post, is caused by a line that keeps getting added back to my web.config file. The simple solution is to remove it first, then add it, as seen here:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;lt;handlers&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;remove name="aspNetCore"/&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/handlers&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As found here in this github issue here:&lt;/p&gt;
&lt;p&gt;&lt;a title="Why it is needed to remove then add the aspNetCore handler for sub application" href="https://github.com/aspnet/IISIntegration/issues/760" target="_blank" rel="noopener"&gt;Why it is needed to remove then add the aspNetCore handler for sub application&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If he hadn't asked that, I may have never found the solution. Three years ago and still the same behavior in .Net 5.&lt;/p&gt;</description>
  <author>Mateo Voseo</author>
  <category>dotnetcore</category>
  <category>how to</category>
  <category>miniblog.core</category>
  <guid isPermaLink="false">http://www.sumnone.com/blog/remove-add-aspnetcore-handler-run-as-virtual-application/</guid>
  <pubDate>Sun, 22 Aug 2021 23:20:34 GMT</pubDate>
</item>
<item>
  <title>Miniblog.Core Virtual Application leads to System.NullReferenceException... at WebOptimizer.Taghelpers…</title>
  <link>http://www.sumnone.com/blog/miniblogcore-virtual-application-leads-to-systemnullreferenceexception-at-weboptimizertaghelpers…/</link>
  <description>&lt;p&gt;Miniblog.Core is pretty awesome. It&amp;rsquo;s small, optimized, has a ton of features, and is usually easy to setup. If I am running Miniblog.Core as just the root website, I can have it setup in minutes. However, upon trying to run Miniblog.Core in a /blog subdirectory off the main IIS website (i.e. a virtual application, not a virtual directory), it should otherwise be straight forward and pretty much is once you get over the couple hurdles I encountered.&lt;/p&gt;
&lt;p&gt;Upon initial publishing, you need to comment out the duplicate handler that gets created within the Miniblog.Core web.config file:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;!-- &amp;lt;handlers&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /&amp;gt; &lt;br /&gt;&amp;lt;/handlers&amp;gt; &amp;ndash;&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This handler gets added automatically (even if you don&amp;rsquo;t have a web.config file in your project) and is only required for the root application/website and is erroring because of the duplicate name. (Luckily I found the workaround to this initial error while researching the issue for the following error.) However, once that 500 &amp;ndash; Internal Server error is out of the way, you then run into yet another HTTP 500 Internal Server Error (in a slightly different format).&amp;nbsp; Upon further investigation of the application event log (or logging in the app), you find:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Category: Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer &lt;br /&gt;EventId: 2 &lt;br /&gt;RequestId: 800007c3-000e-bf00-b63f-84710c7967bb &lt;br /&gt;RequestPath: /blog/ &lt;br /&gt;SpanId: |e21f856f-43a1440405eabe7c. &lt;br /&gt;TraceId: e21f856f-43a1440405eabe7c &lt;br /&gt;ParentId:&lt;/p&gt;
&lt;p&gt;Connection ID "13763000522984392642", Request ID "800007c3-000e-bf00-b63f-84710c7967bb": An unhandled exception was thrown by the application.&lt;/p&gt;
&lt;p&gt;Exception: &lt;br /&gt;System.NullReferenceException: Object reference not set to an instance of an object. &lt;br /&gt;&amp;nbsp;&amp;nbsp; at WebOptimizer.Taghelpers.LinkTagHelper.Process(TagHelperContext context, TagHelperOutput output) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.ProcessAsync(TagHelperContext context, TagHelperOutput output) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.RunAsync(TagHelperExecutionContext executionContext) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at AspNetCore.Views_Shared__Layout.&amp;lt;&amp;gt;c__DisplayClass52_0.&amp;lt;&amp;lt;ExecuteAsync&amp;gt;b__0&amp;gt;d.MoveNext() in D:\Documents\Visual Studio 2019\Projects\Simple.Minicore.Blog\src\Views\Shared\_Layout.cshtml:line 17 &lt;br /&gt;--- End of stack trace from previous location where exception was thrown --- &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.SetOutputContentAsync() &lt;br /&gt;&amp;nbsp;&amp;nbsp; at AspNetCore.Views_Shared__Layout.ExecuteAsync() in D:\Documents\Visual Studio 2019\Projects\Simple.Minicore.Blog\src\Views\Shared\_Layout.cshtml:line 4 &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderLayoutAsync(ViewContext context, ViewBufferTextWriter bodyWriter) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ActionContext actionContext, IView view, ViewDataDictionary viewData, ITempDataDictionary tempData, String contentType, Nullable`1 statusCode) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext context, ViewResult result) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.&amp;lt;InvokeNextResultFilterAsync&amp;gt;g__Awaited|29_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State&amp;amp; next, Scope&amp;amp; scope, Object&amp;amp; state, Boolean&amp;amp; isCompleted) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters() &lt;br /&gt;--- End of stack trace from previous location where exception was thrown --- &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.&amp;lt;InvokeNextResourceFilter&amp;gt;g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State&amp;amp; next, Scope&amp;amp; scope, Object&amp;amp; state, Boolean&amp;amp; isCompleted) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync() &lt;br /&gt;--- End of stack trace from previous location where exception was thrown --- &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.&amp;lt;InvokeAsync&amp;gt;g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Routing.EndpointMiddleware.&amp;lt;Invoke&amp;gt;g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at WebMarkupMin.AspNetCore2.WebMarkupMinMiddleware.ProcessAsync(HttpContext context, Boolean useMinification, Boolean useCompression) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at WebMarkupMin.AspNetCore2.WebMarkupMinMiddlewareBase.Invoke(HttpContext context) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at WebEssentials.AspNetCore.OutputCaching.OutputCacheMiddleware.ServeFromMvcAndCacheAsync(HttpContext context) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at WebEssentials.AspNetCore.OutputCaching.OutputCacheMiddleware.InvokeAsync(HttpContext context) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at WilderMinds.MetaWeblog.MetaWeblogMiddleware.Invoke(HttpContext context, MetaWeblogService service) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware.Invoke(HttpContext context) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.&amp;lt;Invoke&amp;gt;g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.HandleException(HttpContext context, ExceptionDispatchInfo edi) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.&amp;lt;Invoke&amp;gt;g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Builder.Extensions.UsePathBaseMiddleware.Invoke(HttpContext context) &lt;br /&gt;&amp;nbsp;&amp;nbsp; at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync()&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;NullreferenceExceptions are pretty easy to troubleshoot when it&amp;rsquo;s your own code. However, I can see that it&amp;rsquo;s WebOptimizer causing the error. While I messed around with this for hours trying many different IIS configurations and such to resolve whatever path issue the WebOptimizer package was having (and we mostly know it&amp;rsquo;s a pathing issue because it works at the root level), I wasn&amp;rsquo;t able to figure out what it needed to ultimately work like a root Miniblog.Core installation (i.e. problem free). After commenting out all the WebOptimizer code and getting it to work, yet formatted all wonky, I then simply tried leaving all WebOptimizer references in, except the addTagHelper in the _ViewImports.cshtml file:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;@*@addTagHelper *, WebOptimizer.Core*@&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;At this point, I don&amp;rsquo;t know WebOptimizer enough to know specifically what issues I&amp;rsquo;ll run into in the future by removing this, but I know the realm and so far everything looks normal.&lt;/p&gt;
&lt;p&gt;One last thought, you also can&amp;rsquo;t have your application pools the same for your root website and virtual application (i.e. Miniblog.Core). Therefore, you&amp;rsquo;ll need to create a new application pool and assign Miniblog.Core to it. However, if you run into this error, it&amp;rsquo;s blatantly obvious as they tell you exactly what the issue is as opposed to some of these more cryptic errors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE:&amp;nbsp;&lt;/strong&gt;Turns out I had to edit (essentially remove) all the "/blog" routes in the BlogController too (only the "/blog" portion of the route, leave the rest of the route), and maybe a few others. Otherwise, I'd have to route to /blog/blog/etc for every route. Just search "/blog", but don't do a blanket replace. There might be a more clever way to work with the virtual paths, but can't think of anything now and I'll have to investigate later.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;</description>
  <author>Mateo Voseo</author>
  <category>miniblog.core</category>
  <category>dotnetcore</category>
  <category>how to</category>
  <guid isPermaLink="false">http://www.sumnone.com/blog/miniblogcore-virtual-application-leads-to-systemnullreferenceexception-at-weboptimizertaghelpers…/</guid>
  <pubDate>Sun, 22 Aug 2021 18:03:06 GMT</pubDate>
</item>
<item>
  <title>NAT Hyper-V Guests to Public Network Using New-NetNAT</title>
  <link>http://www.sumnone.com/blog/nat-hyper-v-guests-to-public-network-using-new-netnat/</link>
  <description>&lt;p&gt;When I first setup my server, the best solution I could find to route my Hyper-V guests from the private network out the internet facing IP addresses was ICS (internet connection sharing). It works ok, but after every reboot, I have to disable ICS and then re-enable it again on the host. Otherwise, it simply doesn't work. It's not ideal, but no big deal for a process I'm very hands-on about.&amp;nbsp;I thought Microsoft would fix it one of these years, but no such luck.&lt;/p&gt;
&lt;p&gt;Now that I have almost half a million IP addresses in the firewall, turning ICS off and on takes tens of minutes and even throws errors that you wouldn't guess if you didn't know it was still going through the process of handling all those firewall addresses in the background (and then sometimes it doesn't work and I have to do it again). My Hyper-V guests are not mission critical, so I've been fairly reluctant to mess with it too as I'm not near my server's colocation datacenter and always a little scary messing with the NICs remotely. However, the time has come when that solution is just not acceptable any more and it's always haunted the back of my mind a bit as I tend to automate everything possible.&lt;/p&gt;
&lt;p&gt;The other reluctance is that I have multiple NICS teamed and then the Microsoft Multiplexor driver on top of that. Therefore, it seems like magic that any of it works. I like simplicity too. The more steps in a process, the more chance of failure. However, that solution provides redundancy, so it's a risk to reward situation.&lt;/p&gt;
&lt;p&gt;I still needed a virtual switch to run my guest OSes with ICS so I simply modified that internal virtual switch to have an IP address of 192.168.0.1. Then, executed the following command in powershell:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span style="color: #0000ff;"&gt;New-NetNAT -Name &amp;ldquo;NATNetwork&amp;rdquo; -InternalIPInterfaceAddressPrefix 192.168.0.0/24&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You're only allowed to have one NAT Network. I have no idea what happens when you run the previous command multiple times for different subnets. I suppose it's possible you could forget over time and best to look first. There is no GUI for New-NetNAT that I found, so to view your current configuration:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span style="color: #0000ff;"&gt;Get-NetNat&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Returns:&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;sub&gt;&lt;code&gt;Name&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: NATNetwork&lt;/code&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;sub&gt;&lt;code&gt;ExternalIPInterfaceAddressPrefix :&lt;/code&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;sub&gt;&lt;code&gt;InternalIPInterfaceAddressPrefix : 192.168.0.0/24&lt;/code&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;sub&gt;&lt;code&gt;IcmpQueryTimeout&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 30&lt;/code&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;sub&gt;&lt;code&gt;TcpEstablishedConnectionTimeout&amp;nbsp; : 1800&lt;/code&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;sub&gt;&lt;code&gt;TcpTransientConnectionTimeout&amp;nbsp; &amp;nbsp; : 120&lt;/code&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;sub&gt;&lt;code&gt;TcpFilteringBehavior&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: AddressDependentFiltering&lt;/code&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;sub&gt;&lt;code&gt;UdpFilteringBehavior&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: AddressDependentFiltering&lt;/code&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;sub&gt;&lt;code&gt;UdpIdleSessionTimeout&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : 120&lt;/code&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;sub&gt;&lt;code&gt;UdpInboundRefresh&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : False&lt;/code&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;sub&gt;&lt;code&gt;Store&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Local&lt;/code&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;sub&gt;&lt;code&gt;Active&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: True&lt;/code&gt;&lt;/sub&gt;&lt;/p&gt;
&lt;p&gt;If nothing shows up after typing that command, you have no Natting configured. However, if you need to remove Natting for some reason, type:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span style="color: #0000ff;"&gt;Remove-NetNat&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You may need (it's recommended) to restart the host after executing the previous remove command.&lt;/p&gt;
&lt;p&gt;If you're setting all this up from scratch, you can create a internal switch through the Virtual Switch Manager or type the following commands:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span style="color: #0000ff;"&gt;New-VMSwitch -SwitchName &amp;ldquo;NATSwitch&amp;rdquo; -SwitchType Internal&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #0000ff;"&gt;&lt;code&gt;New-NetIPAddress -IPAddress 192.168.0.1 -PrefixLength 24 -InterfaceAlias &amp;ldquo;vEthernet (NATSwitch)&amp;rdquo;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I found the solution on Petri.com. I haven't been on that site in probably over a decade so it's good to see it still around:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://petri.com/using-nat-virtual-switch-hyper-v"&gt;https://petri.com/using-nat-virtual-switch-hyper-v&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next project is to manage those firewalled IP addresses a little better. Considering the server is still responding in under a second when it's parsing all traffic through half a million firewalled IP addresses is not too shabby. Maybe I'll post some IDS/IPS C# code I wrote at some point though...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; This is working great for months now. However, In the beginning, I noticed after each reboot I would lose connectivity to the internet from the hyper-v guests. Upon investigation, I noticed after the reboot, something would add the 192.168.137.1 ICS address to the virtual switch (192.168.0.1). Upon removing the 137 address, it would all work again. Upon reboot, the issue back. Rinse, repeat.&lt;/p&gt;
&lt;p&gt;After about the third time of this happening, I went registry hunting and found lists of 192.168.137.1 addresses on at least two different nics in the registry that weren't showing up in the gui. Unfortunately, I didn't save or remember which HKLM entries these were, but it's very easy to find when searcing "192.168.137.1" in the registry and then seeing a 50+ long list of these same addresses.&lt;/p&gt;
&lt;p&gt;After removing all these orphaned 137.1 addresses, it all works as it should after a reboot. Otherwise, I probably would have needed at least 100 more reboots to clear all the 137 addresses at one removal per reboot.&lt;/p&gt;
&lt;p&gt;Therefore, it appears every time I enabled ICS (sometimes more than once after a reboot because there were so many firewall addresses the gui would time out), it would add the 137 address to a few places in the registry and never remove them. It also appears it adds a set of ICS firewall rules every time you enable ICS. Therefore, there are hundreds of orphaned firewall rules that needed removing as well.&lt;/p&gt;
&lt;p&gt;Lastly, I finally wrote the code to manage the firewall addresses and went from 580k addresses down to about 37k. The performance increase is noticable, but the difference is like snapping your finger and snapping your finger. It just feels more responsive, but hard to put a number on it that would be more than milliseconds.&lt;/p&gt;
&lt;p&gt;I've always heard people talk about how the Windows firewall cannot do this or that or it's problematic, and yet it seems to work great for me. It's definitely come a long way in 20 years. It processing more than 580,000 firewall entries (just for my IDS/IPS, not including the default entries), while running the base OS, multiple hyper-Vs guests, IIS, email, etc. is nothing to sneeze at, especially while being completely stable.&lt;/p&gt;</description>
  <author>Mateo Voseo</author>
  <category>how to</category>
  <guid isPermaLink="false">http://www.sumnone.com/blog/nat-hyper-v-guests-to-public-network-using-new-netnat/</guid>
  <pubDate>Wed, 10 Feb 2021 22:36:10 GMT</pubDate>
</item>
<item>
  <title>How to Fix HTTP Error 500.30 - ANCM In-Process Start Failure</title>
  <link>http://www.sumnone.com/blog/how-to-fix-http-error-500.30-ancm-in-process-start-failure/</link>
  <description>&lt;p&gt;Are you getting this error after posting or publishing a .Net Core application to a web directory?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;HTTP Error 500.30 - ANCM In-Process Start Failure&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Common solutions to this issue:&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; The application failed to start&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; The application started but then stopped&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; The application started but threw an exception during startup&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Troubleshooting steps:&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; Check the system event log for error messages&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; Enable logging the application process' stdout messages&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; Attach a debugger to the application process and inspect&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;For more information visit: https://go.microsoft.com/fwlink/?LinkID=2028265&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's basically a generic error and the best place to check for the reason is the Application Event Log. I've run into this error when my database connection string was incorrect or an auto-detection server version variable wasn't working. Those were obvious clues given in the Application Event Log.&lt;/p&gt;
&lt;p&gt;However, if you don't see a reason in the Application Event Log or a less than obvious reason, one thing you can try is to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;IIS Manager &amp;gt; Application Pools&lt;/strong&gt; and find the application pool that the website you just published to is using.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Right click&lt;/strong&gt; the application pool and choose &lt;strong&gt;Advanced Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;One of the very first options is &lt;strong&gt;Enable 32-Bit Applications&lt;/strong&gt; and it is set to true by default. &lt;strong&gt;Set it to False&lt;/strong&gt;. Choose Ok to exit.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Refresh the page and see if your website is working now.&amp;nbsp;&lt;/p&gt;</description>
  <author>Mateo Voseo</author>
  <category>how to</category>
  <category>dotnetcore</category>
  <guid isPermaLink="false">http://www.sumnone.com/blog/how-to-fix-http-error-500.30-ancm-in-process-start-failure/</guid>
  <pubDate>Fri, 15 Jan 2021 23:19:11 GMT</pubDate>
</item>
<item>
  <title>I'm back with Miniblog.Core</title>
  <link>http://www.sumnone.com/blog/back-with-miniblog-core/</link>
  <description>&lt;p&gt;I'm back with Miniblog.Core, previously BlogEngine.Net (dotnetblogengine.net). BlogEngine.net was abandoned and prone to security vulnerabilities and so I deleted the blog to not have to worry about it and then worked on a couple other projects for a couple years without even thinking about a blog.&lt;/p&gt;
&lt;p&gt;I'm not sure, but it appears BlogEngine.net was taken over by a different author and exists now at BlogEngine.io. It looks the same as the original BlogEngine.net, with all the same features, themes and add-ons and I'm assuming updated to plug the holes.&lt;/p&gt;
&lt;p&gt;This blog is not that great. It's mostly where I post issues I run into from time to time and jot them down, so I have a place to recall what I did. If it helps someone else too, then great. It's also a testbed for new frameworks before I try them in other places.&lt;/p&gt;
&lt;p&gt;Long story short, Miniblog.Core is a minimal blog engine framework by the original BlogEngine.net author that really focuses on simplicity and performance. Combined with Cloudflare, it gets a 100% on both mobile and desktop platforms. I didn't test without Cloudflare, but I know the demo blog scores very close to that.&lt;/p&gt;
&lt;p&gt;You can find Miniblog.Core here:&lt;/p&gt;
&lt;p&gt;https://github.com/madskristensen/Miniblog.Core&lt;/p&gt;
&lt;p&gt;There is just a couple issues. At the time of this writing, when you try to install via the command nuget package instructions on the above link (dotnet new --install MadsKristensen.AspNetCore.Miniblog), it installs the older .Net Core 2.0 version. So, you basically need to download the code from the main page above and go from there.&lt;/p&gt;
&lt;p&gt;Second, pagination wasn't working for me. So, I needed the fix here:&lt;/p&gt;
&lt;p&gt;https://github.com/madskristensen/Miniblog.Core/pull/149/files&lt;/p&gt;
&lt;p&gt;Lastly, and not an issue, the posts are written in xml and very similar to the original BlogEngine.net. So, I created a converter here:&lt;/p&gt;
&lt;p&gt;https://github.com/sumnone/BlogEngine2MiniblogCorePostXMLConverter&lt;/p&gt;
&lt;p&gt;Once done converting, simply copy the converted (output) xml files to your posts folder in your new Miniblog.Core installation.&lt;/p&gt;</description>
  <author>Mateo Voseo</author>
  <category>miniblog.core</category>
  <category>dotnetcore</category>
  <category>how to</category>
  <guid isPermaLink="false">http://www.sumnone.com/blog/back-with-miniblog-core/</guid>
  <pubDate>Thu, 14 Jan 2021 10:46:03 GMT</pubDate>
</item>
<item>
  <title>Movie Maker - Download Windows Essential 2012 (formerly Windows Live Essentials 2012)</title>
  <link>http://www.sumnone.com/blog/movie-maker-download-windows-essential-2012-formerly-windows-live-essentials-2012/</link>
  <description>&lt;p&gt;Windows Movie Maker still works on Windows 10. However, you can't just install Movie Maker, you have to install Windows Essentials 2012, as it's a part of that suite. You &lt;strong&gt;used to be able to download&lt;/strong&gt; it here:&lt;/p&gt;
&lt;p&gt;https://blogs.technet.microsoft.com/aviraj/2012/08/08/microsoft-windows-essentials-2012-download-now/&lt;/p&gt;
&lt;p&gt;According to that post though, the &lt;strong&gt;download links were removed because, "Update (3/21/2017): URLs removed as WLE lifecycle is over."&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you don't trust download sites, since they are usually trying to blast you with ads, get you to click on the wrong link, or attach a download manager (or whatever), you can find it with some basic google searching. However, here it is from web.archive.org, which was saved from Microsoft directly:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://web.archive.org/web/20170112124505/http://wl.dlservice.microsoft.com/download/C/1/B/C1BA42D6-6A50-4A4A-90E5-FA9347E9360C/en/wlsetup-all.exe"&gt;wlsetup-all.exe&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description>
  <author>Mateo Voseo</author>
  <category>how to</category>
  <guid isPermaLink="false">http://www.sumnone.com/blog/movie-maker-download-windows-essential-2012-formerly-windows-live-essentials-2012/</guid>
  <pubDate>Mon, 24 Apr 2017 12:02:00 GMT</pubDate>
</item>
<item>
  <title>Permanently Unblock "This file came from another computer and might be blocked to help protect this computer."</title>
  <link>http://www.sumnone.com/blog/permanently-unblock-this-file-came-from-another-computer-and-might-be-blocked-to-help-protect-this-computer/</link>
  <description>&lt;p&gt;Ever run into the message "This file came from another computer and might be blocked to help protect this computer?" It's been around forever and showed up around the XP days (if I remember correctly). Many users are not even aware there is a way to unblock it. My CTO repeatedly called me to remind him what to do. It's super annoying on compressed files (e.g. zip, rar, etc) and should be easier to permanently unblock than it is. The unblock should be in the message itself as a prompt.&lt;/p&gt;
&lt;h2&gt;Unblock Individual Files&lt;/h2&gt;
&lt;p&gt;To individually unblock it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Right click the file&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Properties&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;At the bottom of the first &lt;strong&gt;General tab&lt;/strong&gt;, you will see the following option:&lt;img style="font-weight: normal;" src="/image.axd?picture=%2f2017%2f04%2f2015-08-09_134409.png" alt="" /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Check the&amp;nbsp;Unblock option&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;strong&gt;Click&amp;nbsp;Ok (or Apply)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Windows Pro (Permanent Unblock)&lt;/h2&gt;
&lt;p&gt;If you have a Pro version of Windows it's easy to do permanently:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Hit the &lt;strong&gt;Windows Key+R&lt;/strong&gt; and type &lt;strong&gt;gpedit.msc&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;User Configuration &amp;gt; Administrative Templates &amp;gt; Windows Components &amp;gt; Attachment Manager&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable: Do not preserve zone information in file attachments&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Windows Home (Permanent Unblock)&lt;/h2&gt;
&lt;p&gt;If you're running a Home version of Windows it's not so easy. You have to go into the registry. However, I have exported my registry key and attached it. Just&lt;strong&gt; download&lt;/strong&gt; and &lt;strong&gt;double click the reg file&lt;/strong&gt; and the settings will be in place. &lt;strong&gt;You might need to reboot&lt;/strong&gt; in order for you to see the changes on files previously downloaded. However, on new files downloaded, it should just automatically work.&lt;/p&gt;
&lt;p&gt;&lt;a href="/FILES%2f2017%2f04%2fChangeSaveZoneInformation.reg.axdx"&gt;ChangeSaveZoneInformation.reg (330.00 bytes)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Please comment if you have any issues.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
  <author>Mateo Voseo</author>
  <guid isPermaLink="false">http://www.sumnone.com/blog/permanently-unblock-this-file-came-from-another-computer-and-might-be-blocked-to-help-protect-this-computer/</guid>
  <pubDate>Wed, 05 Apr 2017 05:41:00 GMT</pubDate>
</item>
<item>
  <title>Aux Wi-Fi Crashing when Plugging in wired U-Verse TV Receiver</title>
  <link>http://www.sumnone.com/blog/aux-wi-fi-crashing-when-plugging-in-wired-u-verse-tv-receiver/</link>
  <description>&lt;p&gt;AT&amp;amp;T U-Verse is a pretty decent service overall. However, their wireless access point (WAP) that connects to the main router is B/G and limited to 54mbps (in theory), but reality is only showing ~3mbps, even when sitting six feet away with no obstacles.&lt;/p&gt;
&lt;p&gt;I have an older Linksys WRT400N router running DD-WRT that's simply connected as a hard-wired switch/WAP (b/g/n) and much faster and more stable than the WAP they provide us. I simply ran a CAT6 cable from the back of the main U-Verse box/router/gateway to one of the ports on the Linksys and turned off DHCP on the Linksys. That's it. When this is working typically, wifi speeds max out the 15mbps that we are subscribed at no matter where you are in the house. &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I try to hard-wire everything if possible. However, whenever I would try to hard-wire their TV receiver, it would always crash the wifi on the Linksys. The TV receiver uses the IPTV protocol and is basically doing multi-casting, which is the root of the entire problem. So, long story short I set up the firewall on my Linksys (DD-WRT) to drop all the multicasting traffic on the atheros (wireless) interfaces.&lt;/p&gt;
&lt;p&gt;If you &lt;strong&gt;login to DD-WRT&lt;/strong&gt;, and go to &lt;strong&gt;Administration &amp;gt; Commands&lt;/strong&gt; and put the following in the box:&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;strong&gt;insmod ebtables&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;insmod ebtable_filter&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;insmod ebt_pkttype&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;insmod ebt_ip&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;ebtables -A FORWARD -o ath0 -p ipv4 --pkttype-type multicast --ip-source ! 192.168.1.0/255.255.255.0 -j DROP&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;ebtables -A FORWARD -o ath1 -p ipv4 --pkttype-type multicast --ip-source ! 192.168.1.0/255.255.255.0 -j DROP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Click &lt;strong&gt;Save Startup, reboot the Linksys&lt;/strong&gt;, and you're done.&lt;/p&gt;
&lt;p&gt;Other examples on the internet, show similar solutions using eth1 or eth0 in the last two lines as well as other options like "-A OUTPUT", and it doesn't hurt to include them, but, the only thing that was definitively required for my setup to work like initially, is what's above. I think the --ip-source and -p switches may not be required as well, but again, it doesn't hurt much.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Life is good again, even though I don't have many wi-fi devices hooked up at any given moment. Hopefully this saves someone a lot of the frustration I dealt with for days in solving this.&lt;/p&gt;</description>
  <author>Mateo Voseo</author>
  <guid isPermaLink="false">http://www.sumnone.com/blog/aux-wi-fi-crashing-when-plugging-in-wired-u-verse-tv-receiver/</guid>
  <pubDate>Wed, 13 Jan 2016 22:34:00 GMT</pubDate>
</item>
<item>
  <title>Windows 10 page_fault_in_nonpaged_area</title>
  <link>http://www.sumnone.com/blog/windows-10-page_fault_in_nonpaged_area/</link>
  <description>&lt;p&gt;I was trying to upgrade an older Dell computer to Windows 10 from Windows 7 and I was continually getting&amp;nbsp;page_fault_in_nonpaged_area. Sometimes (maybe one out of five times and depending on the troubleshooting step too) I would also get "System Thread Exception not Handled." I went through two days of troubleshooting and probably reset Windows 10 at least five times, 50 or more reboots, before finally finding the solution (i.e. problem). Keep in mind I was only half paying attention for the first day as I was allowing it to do it's thing, while I did other things.&lt;/p&gt;
&lt;p&gt;Having seen this error message in the past (going all the way back to NT4), I immediately thought, it's bad RAM. When that turned out to not be the case. I thought bad blocks on the hard drive. I reset the BIOS and every other trick I could think of. However, none of those thoughts paid dividends other than to eliminate them as the issue.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I was finally able to get a restore point immediately after a reset and step forward one step at a time (as well as eliminate having to reset any more), disabling and enabling the network adapter all the while (so windows can't push it's mandatory updates or otherwise change something in between reboots).&lt;/p&gt;
&lt;p&gt;The problem showed up before any Windows updates were installed and after all devices were remedied in the Device Manager. After removing an old NVidia 8600 GTS and enabling the default onboard video, the issue still prevailed. &amp;nbsp;The only things left was an old Soundblaster Audigy card with a front expansion panel. Low and behold, that stupid sound card turned out to be the cause of all my headaches.&lt;/p&gt;
&lt;p&gt;In hindsight, after receiving the error, I should have removed any custom devices and moved forward from there, installing one device at a time. But, I've never seen this type of device cause that type of error (as far as I can remember). Live and learn. Hopefully, this might save someone some time.&lt;/p&gt;</description>
  <author>Mateo Voseo</author>
  <guid isPermaLink="false">http://www.sumnone.com/blog/windows-10-page_fault_in_nonpaged_area/</guid>
  <pubDate>Wed, 09 Dec 2015 14:17:00 GMT</pubDate>
</item>
<item>
  <title>Simple Conversion Mistake from VMDK to VHD / VHDX</title>
  <link>http://www.sumnone.com/blog/simple-conversion-mistake-from-vmdk-to-vhd-vhdx/</link>
  <description>&lt;p&gt;I was doing a Windows Server 2003 to Windows Server 2012 &amp;nbsp;migration as fast as possible and one of the steps was to convert a VMWare machine (Server 2.0.2) to a Hyper-V disk using MVMC 3.0. &amp;nbsp;There are plenty of articles out there on how to do this. In a nutshell, you run the following cmdlet in PowerShell after importing the psd1 module (import command included):&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;strong&gt;Import-Module &amp;ldquo;C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;strong&gt;ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "R:\Virtual Machines\XPPro1\XPPro1-flat.vmdk" -DestinationLiteralPath "R:\VMs\XPPro1\XPPro1.vhdx" -VhdType FixedHardDisk -VhdFormat Vhdx&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;However, on my first try, I was running into the following error:&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;strong&gt;ConvertTo-MvmcVirtualHardDisk : No suitable drive was found at path (R:\Virtual Machines\XPPro1\XPPro1-flat.vmdk).&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;strong&gt;Parameter name: path&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;strong&gt;At line:1 char:1&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;strong&gt;+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "R:\Virtual Machines\XPPro1\XPP ...&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;strong&gt;+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; + CategoryInfo &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: WriteError: (Microsoft.Accel...nversionService:DriveConversionService) [ConvertTo-MvmcVi&lt;/strong&gt;&lt;strong&gt;&amp;nbsp;rtualHardDisk], DriveNotFoundInPathArgumentException&lt;/strong&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;strong&gt;&amp;nbsp; &amp;nbsp; + FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskC&lt;/strong&gt;&lt;strong&gt;ommand&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;At first, I thought MVMC 3.0 didn't like XP since it's already EOL. Then I had the same thought about VMWare Server 2.0.2 since it's old and hasn't been updated in a while. Then upon five minutes more thought, I remembered that the "-flat.vmdk" file is not the actual disk despite being the multi-GB meat and potatoes of the disk. So, upon changing the above command to reflect the actual disk name:&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;strong&gt;XPPro1.vmdk (which is a 1k file)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I was well on my way again.&amp;nbsp;Doh!&amp;nbsp;Hopefully, you don't make the same mistake, but if you find yourself here, it might be that you did and I hope this helps.&lt;/p&gt;</description>
  <author>Mateo Voseo</author>
  <guid isPermaLink="false">http://www.sumnone.com/blog/simple-conversion-mistake-from-vmdk-to-vhd-vhdx/</guid>
  <pubDate>Fri, 03 Apr 2015 18:37:00 GMT</pubDate>
</item></channel>
</rss>