blog

  news
  content management system
  asp.net
  general
  quickelsoft cms

newsletter
Subscribe via RSS or via email
            

Session timeout
 

An interesting rant on the lost of your session in a web app.

 

That is why in QuickelSoft CMS front end pings the server from time to time so that you never loose your session.


Thursday, April 17, 2008



Why does QuickelSoft CMS use a prefix with ASPX in each URL?
 

In the previous version of QuickelSoft CMS, a URL would look like:
http://myserver/default.asp?Folder=124&Content=45

It says: Display the folder with the ID 124 and the content with the ID 45 using the page default.asp

 

This kind of URL:

  • cannot be easily memorized
  • does not say anything about the content to be displayed.

I wanted to avoid that in QuickelSoft CMS for ASP.Net, and have URLs looking like: http://myserver/product/description
Then, the CMS should automatically map that request to an aspx like mytemplate.aspx and send this page the name of the folder and the name of the content item to display.


http://myserver/product/description would be the same as http://myserver/mytemplate.aspx?Folder=/product&Content=description

 

This is called URL rewriting and it is the process of intercepting an http request and redirecting it to a different resource.

 

Prerequisites for URL rewriting in QuickelSoft CMS: "Medium Trust"
QuickelSoft CMS is often used in shared hosting environments and a lot of web hosts do not allow you to modify the configuration of the server running your web site and will also ask you to run with the security policy "Medium trust".

 

There are various ways of writing a URL rewriter in ASP.Net:

  • Write an ISAPI filter to intercept the request.
  • Map an Application Extension to the aspnet DLL in the IIS configuration so that URLs like http://myserver/myfolder/mycontent.html will also be processed by ASP.Net
  • Use the Applicatiion_BeginRequest method in global.asax
  • Some solutions use a custom 404 "page not found" handler.
  • Use an HTTP handler or an HTTP module.

For more information on these methods, you can view this article on MSDN. http://msdn2.microsoft.com/en-us/library/ms972974.aspx

 

After some tests, I decided to use an HTTP module because:

  • The ISAPI and the Application Extension are not acceptable as they oblige you to modify the server configuration.
  • The global.asax solution was not my preferred one because it could force someone to mix their own code with a call to the QuickelSoft CMS API.
  • The 404 trick does not seem to be very efficient or scalable.
  • An HTTP handler cannot be used in "Medium Trust" so I use the HTTP Module solution.

How the HTTP module works
A HTTP module is called for every ASPX request in you web site.

Use these lines to add the QuickelSoft CMS Http module to your web site:

<httpModules>
<add type="QuickelSoft.CMS.API.HttpModule" name="QuickelSoftCMSHttpModule" />
</httpModules>

 

As my module is only called if the URL contains ".aspx", I had to have it in each URL.

I had the choice of putting the ".aspx" at the end of the url (for instance, http://mysite/myfolder/mycontent.aspx).
With this solution, I would have to look into the database for each request to be sure that the url points to a resource managed by the CMS and not a specific folder or page of the web site.

 

To avoid that database call, it is by far quicker to just check if the URL begins with a prefix. The httpmodule can then quickly decide if the CMS processes the request or not.

 

In this example, each request on the site http://www.quickelsoft.com which begins with "/home.aspx" will be processed by the CMS and mapped to a template.

So, http://www.quickelsoft.com/home.aspx/en/product is managed by the CMS.
But https://www.quickelsoft.com/shop/buy.aspx is not.
Every time the web site receives a request for "/shop/buy.aspx", a simple string comparison is enough to establish that the request does not begin with "home.aspx" and so the httpModule must immediately give control back to ASP.Net.

 

You can defined the prefix you want in the site configuration in the field "URL rewriting prefix".

 

Conclusion
The idea of this post comes from John Udell and his article on why "aspx" in a URL is considered harmful.
http://blog.jonudell.net/2008/01/17/aspx-considered-harmful/

His point is:

The technology that produces the name, never mind the version of that technology, is a variable that 
need not, and should not, be exposed. If links are pointing to foo.asp, and your upgraded blog
engine produces foo.aspx, you broke those links.

I do not think exposing a technology is so harmful. If one day you have to switch to a new technology, you can always use a redirection to your new URL.
That is what I did to a customer who used a web site in Lotus Notes to redirect the URL containing ".nsf" (Notes database) to an ASPX page.

 

PS: In the near future, the ASP.Net MVC framework should solve this URL problem and will remove the need for a prefix.
http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx


Thursday, February 28, 2008



URLs and IIS 7
 

By default, when a content item name or a folder name contains spaces, these are replaced by a “+” in the URL generated by QuickelSoft CMS.

 

For instance, if the folder name is "For webmasters" and the content item name is "Understanding pagination in QuickelSoft CMS", then the generated URL will be:

http://www.quickelsoft.com/home.aspx/en/library/for+webmasters/Understanding+pagination+in+QuickelSoft+CMS.html

 

This character “+” is called a double escape sequence and is now by default rejected by IIS 7 in an URL.

See more information on the IIS Team blog:

https://blogs.iis.net/thomad/archive/2007/12/17/iis7-rejecting-urls-containing.aspx

 

If you want to run QuickelSoft CMS on a computer that is running IIS 7 (like Vista), you will have to modify your web.config file.

 

1. Locate the following directory: %windir%\System32\inetsrv\config

2. Open the applicationHost.config file and locate the following code:

 <section name="requestFiltering" overrideModeDefault="Deny" />

3. Set the value of overrideModeDefault as “Deny” if not already set.

 <section name="requestFiltering" overrideModeDefault="Allow"/>

4. Open you web.config file

5. Add the following code in your file in the “configuration” section:

<configuration>
 <system.webServer>
  <security>
   <requestFiltering allowDoubleEscaping="True"/>
  </security>
 </system.webServer>
</configuration>

Thursday, February 21, 2008



Debug .Net framework source code
 

You can now configure Visual Studio to debug .Net framework source code.
It allows you to download “on demand” the source code of a framework class to be able to understand how it works.

 

http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx


Thursday, January 17, 2008



Difference between raw log files and Google Analytics
 

I have been using Google Analytics for some time now to analyse the traffic of my web site and I also use another program (WebLog Expert) to analyse the raw log files provided by IIS.

 

To be able to use Google Analytics, you have to add a JavaScript code on each page you want to track. Once the page is loaded in a browser, this JavaScript is executed and the code adds to your page a blank image to call the Google Analytics server and adds all the metrics it can find within the browser (like the referrer, the screen resolution, …)

 

Here is the code I added to my page:

 <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
 </script>
 <script type="text/javascript">
 _uacct = "UA-1062297-1";
 urchinTracker();
 </script>

It was not a surprised to see that the number of visitors reported by Google Analytics is only a quarter of what the log files reported.

Other site owners already saw this traffic difference.

 

But why?

The reasons invoked are almost that:

  • The visitors disable JavaScript in their browser. Google Analytics underestimates.
  • The raw log files contain also the traffic send by robots (like Feedburner) or search bots. Log file overestimates.

For the first reason, I really had doubts that so many people disabled JavaScript as more and more web sites rely on it.

For the second reason, I have put a series of filters in Web Log Expert to be sure not to take into account that traffic.

How? I use filters on the User Agent found in each hit in the log file and I do a reverse DNS on the requestor IP address to see if the request comes from Google, Live.com, Ask.com, …

 

So who is right ? How to test it ?

 

What did I test?
My traffic is pretty stable from week to week so I separated my test during four weeks to try to find an answer to this problem.
The first tests were to try different placements of the Google Analytics script to see if it affected the result.

 

First and second week: Position of the Google JavaScript in the page.

The first week, I put the script at the end of the page just before the tag </body>.

The second week, I moved the script just after the opening tag <body>.

If the script is at the end of your page and if the user stops the download of your page, then, Google Analytics is not called and maybe that is why I have a difference.

And the answer is “No”! During the two weeks, the statistics were pretty much the same.

So for my web site, the position of the script has no influence.


Third week: Google script is not working.
For the third week, I had the nerve to think: “Maybe it is the Google code which is broken”. I know Analytics is used by thousand and thousand of sites so it should have been debugged correctly but who knows?
To test if it was a problem with JavaScript or with Google, I added a simple JavaScript that download a specific image to my page.

<script>
 var tempImage = new Image();
 tempImage.src = "http://www.quickelsoft.com/images/testjs.gif";
</script>

I added this code just before the Google one.

Then, I tracked the file “testjs.gif” in WebLog expert to check if I have more visitors for this file for a specific day than the number of visitors Google Analytics reported and again, I did not see a lot of difference.

For some days, I had more visitors for “testjs.gif” and less in Analytics and sometimes, it was the opposite.

Thus, maybe then a lot of visitors disable JavaScript?

 

Fourth week.
I added even more filters in WebLog Expert just to take into account as user agent the hits coming from Internet Explorer and Firefox.

I have some visitors using Safari and Opera but they only count for 1% of my traffic.

But with these rules, I was also pretty sure that unless a robot uses a fake user agent to pretend to be a browser, only true human visitors will be in the WebLog Expert reports.
And again, I have 3-4 times more visitors with the raw log files.

 

Conclusion

I though the problem was JavaScript but:

  • My test with my own script gave the same number of visitors than Google.
  • How is it possible that Google is so successful with AdSense? AdSense is also based on JavaScript.

So where is the difference ?

At first, I wanted to prove that Google Analytics underestimated my traffic.

Why? Because the raw log files tends to show a better performance for my web site in term of visitors. Which is reassuring.

But in fact, it is Google Analytics which is right.

 

Update: WebLog Expert just launched a new version 5.1 which contains a spider list more complete. I have now almost the same result from Google Analytics and the log files.


Friday, January 04, 2008



Safety study of IE and Firefox
 

Jeff Jones published an analysis on of the vulnerabilities in Internet Explorer and Firefox.

 

I expected to find a list of security problems but I only found a “mine-is-better-than-yours” report. It could have been interesting but for me this kind of comparison is just a waste of time. Who will trust me if I denigrate my competitors? If I spend my time trying to prove that they failed while I still have to improve myself ?

 

It reminds me a story of Ingvard Kampar, founder of Ikea.
During its first years, at the time when Ikea did not design its own furniture, a pressure from the competitors caused suppliers to boycott Ikea. The competitors tried to "demolish" Ikea instead of improving themselves. Ikea continued to innovate and at the end, won.

 

What was more interesting in this report is the link to the National Vulnerability Database which tracks vulnerabilities found in various products. Useful!


Thursday, December 06, 2007



Blog Action Day and the environment
 

The site “Blog Action Day” asked every blogger to blog about the environment.

 

So, here is a link to a environmental web site using QuickelSoft CMS. This company offsets your CO2 emissions.

 

From there web site:

A practical example of carbon cancelling is the emissions caused by one's automobile. 
Individuals emit CO2 through the use of their car for their necessary daily chores.
Company cars emit CO2 whilst carrying out regular business activities which are
required for the survival of the corporation and its employees.
This all contributes to the global warming problem.


However by participating in green activities in developing countries one can offset
these effects by supporting e.g. biomass, wind power, solar power or hydropower
projects. These projects are a step in the right direction, they will slowly
be replacing the fossil fuels.

Monday, October 15, 2007



Use what you know
 

Here is a good article on why you will always be more productive if you use what you know:

I spent two years trying to make Rails do something it wasn’t meant to do, then 
realized my old abandoned language (PHP, in my case) would do just fine if
approached with my new Rails-gained wisdom.

Just after I launched QuickelSoft CMS 2, I had a contact with someone who wanted to launch a new version of his company web site and wanted to use QuickelSoft CMS to maintain its content.
He installed the Demo web site and created a lot of content items for his web site. He then “just” had to modify the ASPX templates coming with the Demo to match the look and feel of what he wanted. And at this point, he was blocked.

 

Why ? The existing web site was developed in PHP. 
I do not know very well PHP but compared with ASP.Net, the philosophy is different, the development tools are different.
So, he began to try to convert his PHP pages in ASP.Net. But it is not so easy if you do not know at all ASP.Net and have to learn it from scratch. So after some tests, he realized he would never have reached his deadline. And he chose to stick with PHP and started to look for another CMS.
He did not spent two years on his test but still, it was a waste of time for him.

 

It is something I should have anticipated during my discussion with him.
Even if the installation of the front end is not very difficult with no knowledge of ASP.Net, at the end, a template in QuickelSoft CMS is still an ASPX page.


Monday, October 08, 2007



New articles
 

Do you want to know how to use pagination in QuickelSoft CMS or how to create folders protected by an Access Control List ?

 

Check in the library. Two new articles have been published to help you to add these functionalities to your site.


Tuesday, September 25, 2007



QuickelSoft CMS and Firefox
 

Two facts:

Not the first one to say this truth but the Firefox’s market share grows.
According to Wikipedia, Firefox's market share had grown to 15.1% globally and I see in my site statistics that 23% of the visitors use Firefox.

And:

I am more and more ashamed to say to potential customers that I do not support Firefox. I have to say that maybe they can use Internet Explorer only for QuickelSoft CMS. Some agree but it is not always the case.

So, the next version of QuickelSoft CMS will support Firefox.
I can hear from my desk some of you saying “Finally!” but believe me, if you do not plan to support IE and Firefox from the beginning and depending of the complexity of your application, it is not an easy task.

 

No plan to add more features to be sure QuickelSoft CMS remains as stable as it is today.

 

If you are interested to test the new version, do not hesitate to send me an e-mail.


Tuesday, September 25, 2007



New RSS feed
 

A new RSS feed is available on QuickelSoft.com if you want to receive news on Content Management System, ASP.Net or anything I might say but which is not necessarily linked with QuickelSoft CMS.

 

So, if you are interested, subscribe!


Saturday, September 15, 2007



Prototype, Prototype and Prototype
 

Via Gadgetopia, I found a very good article on how to select a CMS.
I specifically like the paragraph on prototype, prototype and prototype.

 

That is totally true. The best think you can do to know if a CMS matches your needs is to install it and try to develop a small prototype of what could be your web site.

 

At the beginning of the development of QuickelSoft CMS 2, I thought the best way to showcase the product was to have a demo web site where you can test-drive the CMS directly; you do not have to install anything. It is quick and painless for a first approach. I also wanted to have some videos to help you visualize how it works.  But it just gives a taste of the product and you really have to put your hands in it to discover its full power.

 

The article also says that you should not only focus on the feature list. Correct again!
When you look at different CMS products, you will see they all have more or less the same features.

But how easy is it to use the one you will use 80% of your time?

 

That is why a prototype is absolutely mandatory.

My best advice when you have to select a CMS is to already have an idea of what your site will look like and how you want to organize your content. Begin with the site and then select the product and try to apply your logic to the CMS.  Develop!

 

And with QuickelSoft CMS, you have plenty of time to develop your prototype, the trial version is not time-limited and the support is free. So abuse!

 


Saturday, September 15, 2007



Version 2.0.5 available
 

The version 2.0.5 of QuickelSoft CMS is available for download.

For more information, check the release note.


Monday, August 27, 2007



Review by CMSWire
 
I have just had a nice review of QuickelSoft CMS by CMS Wire.
 
I just wanted to add that if you want to test QuickelSoft CMS in a “production-like” environment, time limited license keys are also available for free.
 
So do not hesitate to ask.

Friday, May 18, 2007



QuickelSoft CMS 2.0.3 is now shipping !
 

QuickelSoft CMS 2.0.3 is now available for purchase from the QuickelSoft store.

 

If you wish to learn more about QuickelSoft CMS, please read the product description, download the free trial version and the documentation.

 

To see QuickelSoft CMS in action you may also be interested in viewing the videos or the online demo.

 

And if you have any question, do not hesitate to contact support@quickelsoft.com .


Thursday, April 19, 2007



End of beta period
 
I will close the beta program on March 26th, so if you still want to participate and be eligible for the 50% discount, just drop me an e-mail at support@quickelsoft.com

Monday, February 26, 2007



Step by Step Installation Movie
 
Watch this movie on how to install QuickelSoft CMS step by step.

Tuesday, January 23, 2007



Demo
 

A free and fully functional demo of QuickelSoft CMS is available for download.

A sample web site is available at http://demo.quickelsoft.com
To access the Content Management System, use http://demo.quickelsoft.com/quickelsoftcms (User ID: demo, Password: demo)

 

For more information, do not hesitate to contact me at support@quickelsoft.com


Monday, December 11, 2006



www.quickelsoft.com uses QuickelSoft CMS
 

QuickelSoft.com is now managed through QuickelSoft CMS.


Monday, December 11, 2006