Skip to main content

Install and verify IIS HttpModules with custom config sections

A week ago I started to learn about HttpModules and HttpHandlers watching a pluralsight course by Robert Boedigheimer. First of all I want to really recommend this course, I learned a lot of stuff which I could not find in any other course, book or blog post.

As I already did in the past with another course, I want to add some comments and extend the HttpModule part. I refer to the course example with the serverMaskModuleGAC.

I walked into some trap doors and thereby I found another approach to simplify the installation process of the module to GAC a little bit. With this approach I am able to verify my custom config sections and module registration is correct.

Here is my approach:

1. When you have finished your implementation for serverMaskModule, install it in the GAC as usual by using the gacutil tool. By the way, there are some traps when you need to install it on Windows Server 2012. Here I am using Windows 8.1 64 Bit. I created my HttpModule with .NET 2.0 because it seems to be more compatible with different IIS and Windows versions. On Windows Server 2012 I was not able to install it with .NET version 4.5.

2. Copy your custom config section schema into the folder C:\Windows\System32\inetsrv\config\schema

3. Add the custom config section in applicationHost.config

4. Register your module by using IIS Manager. Click on the server node, and choose Modules:


5. Click "Add Managed Module"


6. Click again on the server node and choose Configuration Editor


7. Choose the serverMaskedModule section


8. For testing purposes choose another value for header filter (In my implementation I have changed the parameter name from "name="serverMaskModuleGACHeaders" to "headerFilter"):


As long as the value is shown in normal print, it is the default value coming from the custom config section. When you change the value it will be bold printed, IIS Manager will add the config section in the applicationHost.config file.

9. If you did not get any error messages so far you can start sending your first test requests to verify the module is working and filtering the headers you have chosen in the in the serverMaskModule section.

The advantage of this approach is you can test and verify, that module registration and your custom config is validated. E.g. when you have a spelling mistake in your config section you will get an error messages like this:



Comments

Popular posts from this blog

How to integrate AVM smart devices into HomeKit by using openHAB

After some evaluating openHAB (Vers. 2.2.0) on my NAS I wanted to do it right and started with this (German) article to use openHABian together with a Raspberry Pi.My primary goal was to integrate my AVM smart home devices to control them with HomeKit.

To get started I used the following items:
Raspberry PISD Card 16 GB And the following software (I used a Mac, so you might need to replace some tools if you use another OS): Download the latest openHABian image here. This is a dedicated linux distribution to provide an openHAB server.Download SD Formatter here. Needed to format your SD card.Download Etcher here. Needed to install the openHABian image on the SD card. Installation openHABianInsert the SD cardConnect the Raspberry Pi via LAN with your networkPlugin the Raspberry PiWait about 45 minutes until all updates were installedWhen everything went well you should be able to connect to http://openhabianpi:8080Connect via ssh: ssh openhabian@openhabianpi (standard password: openhabian)…

Clean up AppFabric Dashboard Part 2: Duplicate collection entry in Web.config

In Part one I have already described how to remove phantom apps here on more supplement. These phantom apps could also remain in the AppFabric Monitoring db:


Just delete no longer needed entries in this table.
Duplicate collection entry When you receive this kind of issue, like "[...] Cannot add duplicate collection entry [...]" you have defined the a configuration section twice in two different Web.config files in different places in your file system.

Clear One easy solution is to use a clear statement. Searching for the inherited element There is a post in Microsoft's documentation which is explaining how to do it. Visual Studio in debug mode When you are working with Visual Studio in debug mode, which means you are just pressing F5 to run it on your local IIS instead of publishing it to a web server, you should keep in mind that e.g. your obj folder might contain more copies of your Web.config file. This could lead into this duplicate collection issue as well.

How does AppFabric cache calculates the values for RequestCount, ReadRequestCount, WriteRequestCount and MissCount?

When I started to use the Get-CacheStatistics cmdlet to monitor caching activities more intensivley I was often confused. Here an example:


Should not be ReadCount+WriteCount = RequestCount? Why is WriteRequestCount increasing +2 although I just send one put request?

By talking to Microsoft support I figured out how AppFabric cache calculates its numbers (Thanks to Gayathri from Distributed Service Team). Number calculation behavior depends on your configuration, high availability and local cache have a major impact on it.
ActivityRequestCount ReadRequestCount WriteRequestCount MissCount DataCacheFactory is initialized and Named Cache is up +1---Put item, not yet in local and server cache+1-+1 (+2 with HA)+1Get item from local cache----Get item from server cache, local cache has expired+1+1--Get item, local and server cache has expired+1+1-+1
I hope this is helpful for you when you are analyzing the caching behavior for your application.