Jexus Manager Update July 2018

July 2, 2018
Copyright © Lex Li. The Cathedral Church of St. John the Divine, New York City

I know Jexus Manager hasn’t been updated for a while. There are many reasons, and the biggest one of them is that I was working on some huge changes but I didn’t know how easy/difficult it was.

Even if you are quite familiar with Microsoft.Web.Administration API (like I once thought I were), there can be something new, as the new test cases show.

Indeed, they reveal a few interesting behaviors of MWA, on how configuration sections inherit from their parent sections. The effective override mode calculation is pretty challenging, and I completely misunderstood it in the past. Therefore, after introducing such new test cases, I had to stop development and focus on troubleshooting.

The commit was made two days ago, but the test cases were there for months.

Initially I believed a lot need to be re-worked, but things seemed to be easier.

First, the override mode calculation only requires a better way to locate parent section. That means the patch on it is pretty small and can reuse existing code.

Second, I did have some ugly parent section resolution code there, but it did not cover all the proper scenarios. This missing scenario is what exactly the failed test case covers. The patch of this is also easy, with only a few new if checks.

I even used a few new test cases to assert internal data structures so as to confirm the inheritance relationship is correct.

I added more test cases to cover MWA behaviors. Had I stopped at step 2, I might have missed these exciting parts.

Third, IIS configuration section definitions are stored per file (machine.config/root web.config/applicationHost.config/other web.config). It is so obvious a fact, which I neglected it earlier and made stupid code around.

Once I knew how IIS works, it was super cool to clone that in Jexus Manager.

I had to move many methods out of SectionGroup to keep it as clean as possible to map IIS’s version. Some were even removed completely as they were needed no more.

Four, when testing WebSite1/test location tag, the parent section resolution was revised again.

Five, IIS seems to treat configProtectedData section as special case. Otherwise, I could tell why it appears in known section definition list, while on local disk you can find it nowhere. Anyway, Jexus Manager now knows it always, just like IIS.

So now, even if we test some very strange IIS behaviors against Jexus Manager, we can see better compatibility.

You really should update your Jexus Manager installation to latest today.

Stay tuned.

All rights reserved. © Lex Li, 2005-2021