Does Kentico Cache Case-Sensitive Query String’s?
I noticed something very strange whilst working on one of my recent Kentico projects, where I required a query string value to be case-sensitive. You might be asking why? Well the plan was to pass case-sensitive Base64 random value in a bit.ly ID format. For example: www.mysite.com/Home/iAfcTy.
So I added a Wildcard URL to one of my pages to keep the URL looking nice and tidy. In this case: “/Home/{ID}”.
Something with the most simplest of intensions ended up being a bit of a nightmare and to demonstrate what I experienced, see the following test-cases using Kentico’s Wildcard parameter.
Test 1
Passing “Hello” to the query string parameter resulted in the following:
This is the correct outcome.
Test 2 – Things get interesting!
Passing “HELLO” to the same query string parameter resulted in the following:
As you can see, the query string has been cached and resulted in the same value being used. It seems Kentico completely disregards the case sensitivity and it’s only by adding or removing characters that Kentico detects the value passed has changed.
***
My understanding is that by default Kentico accepts the URL’s as entered by the website user. I thought by going to CMS Site Manager and changing the URL settings to “Use exactly the URL of the document” would accept case-sensitive lettering .
As it turns out through my testing, this setting under “URL's and SEO” section doesn’t fix the issue and this may only work for document page names and not the query strings values themselves.
For one moment, I thought I managed to find a bug in the Kentico platform and was hoping that I'd get a tree planted bearing my name through Kentico’s brilliant tree for a bug campaign. Alas, this was not the case. After discussing in great detail the problem with emails sent back and forth I couldn't seem to get the support personnel to replicate the issue.
But if I'm experiencing this issue across different networks, workstations and installations, there must be an underlying problem within the Kentico platform.
If one of my fellow Kentico experts can can try what I have stated in my post and report their findings in the comments section, it would be much appreciated.
Who knows, there might be a really simple thing I’ve overlooked.
Workaround
Using the standard way of passing a query string value works perfectly and it only seems Kentico Wildcard URL’s experiences this issue. So instead of using the Wildcard method, you will have to pass values in the following format:
www.mysite.com/Home/?ID=Hello