"Do I need Windows hosting?" depends on which version of .NET your application uses. Getting it wrong is one of the most common reasons an ASP.NET site fails on its first deployment. Here is how to tell what you need, and what to check with your hosting provider before you upload anything.
Two kinds of .NET
There are two families of .NET that host very differently:
- .NET Framework (up to 4.8.1): the original, Windows-only platform. ASP.NET WebForms, ASP.NET MVC 5, Web API 2 and WCF services run on it. These applications need Windows hosting with IIS.
- Modern .NET (formerly .NET Core; .NET 8, .NET 10 and later): cross-platform. ASP.NET Core applications run on Windows with IIS or on Linux behind a web server such as Nginx, and in containers.
To find out which you have, open the project file. <TargetFramework>net48</TargetFramework> or a web.config-heavy WebForms project means .NET Framework; net8.0 or net10.0 means modern .NET.
When Windows hosting is the right choice
- Your application targets the .NET Framework (WebForms, MVC 5, WCF).
- You depend on Windows-only components: COM objects, Crystal Reports, Windows authentication or specific Windows libraries.
- You use Microsoft SQL Server features that are easiest to run alongside the app on Windows.
- Your team is used to managing IIS and Plesk for Windows.
When Linux hosting works well
- Your application is on modern .NET (ASP.NET Core) with no Windows-only dependencies.
- You want to run in Docker containers or on cloud platforms that favour Linux.
- Your database is PostgreSQL or MySQL, or SQL Server on a separate server.
Linux hosting is often cheaper for the same resources, and modern .NET performs very well on it.
What to check with your hosting provider
Before you buy a plan or deploy, confirm these points in writing:
- .NET Framework version: for older apps, confirm .NET Framework 4.8 is installed.
- ASP.NET Core Hosting Bundle: for ASP.NET Core on IIS, the server needs the hosting bundle (which installs the ASP.NET Core Module) for your .NET version. Without it, IIS cannot read the
<aspNetCore>section ofweb.configand the site fails with HTTP Error 500.19. - Self-contained deployments: if the host's .NET version lags behind yours, you can publish your app self-contained with its own runtime, but the ASP.NET Core Module must still be installed.
- Database: which SQL Server or MySQL versions are available, and how many databases your plan includes.
- Write permissions: if your app saves files (uploads, logs, an
App_Datafolder), the application pool user needs Modify permission on that folder. - SSL certificates: free Let's Encrypt certificates for your domain and the
wwwversion, with automatic renewal. - Email sending: which SMTP server name to use. The certificate on the mail server must match the host name you connect to, or secure connections will be refused.
- Backups and access: how often backups run, how to restore, and whether you get FTP/SFTP, Web Deploy or Git deployment.
Shared hosting, VPS or cloud?
- Shared Windows hosting is affordable and fine for business websites and small applications, within the limits the provider sets.
- A VPS (virtual private server) gives you full control: install any .NET version, run background services and tune IIS. It suits growing applications.
- Managed cloud platforms such as Azure App Service remove server maintenance entirely and scale on demand, at a higher price.
Planning a move to modern .NET?
If you're running WebForms or MVC 5 today, you can keep Windows hosting while you modernise, then choose freely between Windows and Linux once you're on ASP.NET Core. Our WebForms to ASP.NET Core migration guide explains a step-by-step approach.
We provide Windows and ASP.NET hosting, domains and business email with 24/7 monitoring, and we deploy and support .NET applications on any host. See our web hosting services, or ask us which plan fits your application.