Choose a Web Hosting Provider for your ASP.NET website(Kristofer Gafvert, June 8, 2005)
This article will not recommend any specific web hosting provider. It will instead give the reader useful information and guidance in how to find the best web hosting provider for their website. Each web application is unique and has its own demands, so it is not possible to give a complete "do this...check that". Instead this is more of a general guide.
The number of web hosting providers is huge. The price can range from free up to several thousands dollar per month. Most people are however looking for a web hosting provider in the range of $100 - $300 per year, and in my opinion, you should not go any cheaper than that (the old saying "You get what you pay for" applies to this business as well, so if you are serious with your website, do not go beneath $100, you will most likely get disappointed). But of course, I am not saying that all web hosting providers offering cheap services are "bad", but it is more difficult to find a great web hosting provider in that price range.
The very first thing you should do is a list of what you actually need. Many people choose a web hosting provider based on what they offer (someone may offer PHP, but the organization have a website based on ASP.NET, and do not plan on using PHP), and not what they need. Remember that choosing a web hosting provider is not a one-time decision you do only once in your life time. If you later use something your current web hosting provider does not offer you can change web hosting provider! So your decision should be based on what you need today, or what you plan to need in the near future.
This list may contain:
Do you use ASP.NET, ASP, PHP, JSP, or a combination of them?
This is quite easily to find out, since you (probably) already have developed your web application. But remember that if your visitors are allowed to upload content, you may need much more than what your web application is using alone. If you use a disk-based database (Microsoft Access for example), or store content in XML-files, the disk space required may also go beyond what was thought in the beginning.
First of all, these are not the same thing. When looking at web hosting plans, you probably see that you are limited to NN amount of data transfer per month. Some refers to this as bandwidth, but it is not. Usually, you do not have any option for bandwidth, but you have a limit of data transfer.
For a small to medium size website, you will not send anymore than 3 GB of data each month. In the beginning (when the website is not yet well-known), you can probably live with a limit of 1 GB. But remember that if you have many downloadable files (PDF, ZIP, MPG etc.), you can easily go above the limit of 3 GB.
Another thing to check out for is the viewstate. Many developers do not seem to understand the purpose of it, and when to turn it off for a control. A huge viewstate can drive up the amount of data transferred (and it also makes your pages slow because more data is transferred to the end-user).
The amount of data transferred each month is (in my opinion) difficult to calculate for in advance. So make sure that the web hosting provider has a flexible plan for this (i.e. you can pay extra for the traffic, without upgrading to another plan, and that this does not cost you unreasonable much money).
Microsoft Access (some people would argue if this really is a database :-) and MySQL are often included without no extra charge. SQL Server on the other hand can cost. And it can cost a lot! If you are using SQL Server, compare the cost between many web hosting providers, it can vary tremendous. Also check how much storage your database requires. Web hosting providers often charges more per MB of database storage, than they do for disk storage.
Does your website require SSL for secure communication (for example for credit card information)?
Will you send out a newsletter? Do you need an emailing list? Do you need email, and how many do you need? Check with the web hosting provider so they support your needs.
Does your web application need some special configuration in IIS? For example mapping certain extensions to the ASP.NET ISAPI extension? Some web hosting providers may not want to do this on a shared server. So ask them before you decide you want to do business with them.
Once you have a list of everything needed to theoretically get your website up and running, it is time to find a web hosting provider offering what you need. In addition to what you theoretically need, you should also pay attention to things such as backup, availability, reliability, security, knowledge and much more.
Servers do crash. The question is; what will happen to your content? If you have everything stored on your hard disk (which is the case for many static websites), not so much is lost. But for a dynamic website, maybe with a Microsoft Access database, all the content can be lost! A decent web hosting provider should backup the disks every day.
Another critical decision when it comes to backup is how long it will take the web hosting provider to restore the backup in case of a failure.
Keep in mind that backup of SQL Server and other database management systems is a separate process from the file system backup. So if you are using SQL Server, make sure to ask about both backup processes.
The web hosting provider should perform the backups when the load on the web servers is as low as possible, (ask them, they usually don't print this on their website)
First of all, availability is not equal to uptime. You want to have a high availability, but the uptime of the server is not that important. When only one server is used however, availability is somewhat related to uptime (because there is no other server that can handle the requests when the server is down).
But remember that a Windows server in general needs to be rebooted every month (because of new updates). So if the uptime of the web hosting provider's web servers are longer than a month, it can be an indication of that the web hosting provider is not security aware (but it does not necessarily mean that!).
Patching should of course happen when the load is as low as possible, to not interrupt visitors of your website. Ask the web hosting provider when the apply patches.
As already mentioned in the Backup section, web servers may crash. If/when (!) that happens, what will happen to your website? Will your website go down, and for how long? Or is there another server that can host the websites? Maybe the end-user won't even notice when a server becomes unavailable (there are different ways to do this, but it usually costs more than $300 per year, which is the price range this article focuses on).
The web hosting provider should have a redundant connection of at least 1 GBit (depends on how many websites the web hosting provider hosts, and also if they offer other services such as streaming media). If the web hosting provider also offers DNS, the DNS servers should be located in different physical locations and have different ISPs (if DNS is down, your visitors will not find your website, and emails will not be delivered).
It is difficult to find out how a reliable a web hosting provider is in advance. Do some general searching on Google.
I really do not want to list knowledge as something you (the customer) need to watch for. But it seems that some web hosting providers does not have the required knowledge to run an IIS web server. Or, they can run one, but they cannot configure it for shared hosting, making the web server insecure and/or slow.
Again, this is a difficult thing to find out before you have your website hosted with them. But ask the web hosting provider technical questions before you decide to put your website there. A few questions could be (related to IIS 6.0):
Do you run each customer in its own application pool?
"Correct" answer: For a dynamic website, the answer should be "Yes".
If each customer does not have an own application pool, one customer's "buggy" website can affect another customer's (in fact, bring down the other customer's website). If the website is static, all websites can run in the same application pool. Some web hosting providers will run multiple customers in the same application pool, to squeeze in as many customers as possible on each server. A web hosting provider running IIS 6.0 should not reply back with: "What is an application pool?"
Does each customer have its own anonymous user account?
"Correct" answer: "Yes, they have."
If multiple customers share the same anonymous user, they can access the source code of another customer's website (well, it may not be 100% correct, because it depends on how the rest of the server is configured). If the web hosting provider says that the anonymous user account is shared, definitely ask the following question.
Have you done anything to prevent other customers to access my website's source code?
"Correct" answer: There are several ways to do this. You should however not get an answer only saying "Yes we have". They should be able to explain what they have done; it is not a secret they must keep for themselves.
Security is somewhat related to knowledge - the knowledge of how to secure the server. A web hosting provider should install all relevant updates as soon as possible. Ask them when they do this!
If the web hosting provider also offers SQL Server hosting you may want to ask how you administrate your database. Some web hosting providers provide access over port 1433 (standard port to administrate SQL Server remotely). Personally, I dislike this (but some people would say that it is safe).
It is always great to know how many visitors you have, and what they read most. To know this, you need access to the log files (there are other ways as well). Some web hosting providers will not give you access to the log files, or charge extra.
How can you upload your website; via FrontPage Extensions or FTP? Keep in mind that Visual Studio works with FrontPage Extensions.
The web hosting provider should have some kind of control panel so you can do the basic administration yourself. It is annoying to have to contact support to do something basic as changing the password for an email account.
If you have any special configuration you need for your website (such as adding ISAPI filters, or mapping extensions to an ISAPI extension), ask in advance if you are allowed to do that. In a shared hosting environment, you are most likely limited in what you can do with the web server itself.
How to administrate your database(s) (if any) is another question you need to find the answer to.
Many of the cheapest web hosting providers are located in the United States. If you are located in another area of the world, it can however be a good idea to choose a local web hosting provider. First of all, if something goes wrong, you are familiar with the language and you do not have to make expensive distance phone calls to get everything sorted out. Second, you know the local laws if something goes terrible wrong.
If your visitors will also be local to your country, it is yet another good idea to look at local web hosting providers. Because why send the traffic across the world? That will only delay the loading of the website.
How and when can you contact the web hosting provider when something goes wrong? Internet is live 24/7, so a web hosting provider offering support 24/7 is preferable.
At last, three useful tips.
If you need to buy a domain name for your website, make sure you own the domain name. Some web hosting providers buy the domain in their name, and if you later decide to switch to another web hosting provider, you will have to pay a lot of money for your domain name.
I say it again: "You get what you pay for". Nothing is free; you pay it in one way or another.
It is often a good advice to look up the web hosting provider on Google and forums before choosing. But keep in mind that you should not believe in everything you read. People are keener to write about their unhappiness with a web hosting provider, than their happiness with one. So always try to understand why the complainer is thinking in that way.
Applies to [?]
Windows Server 2003, IIS 6