ASP.NET hosting in South Africa means running your .NET application on a Windows server with IIS (Internet Information Services), usually alongside a Microsoft SQL Server database, on infrastructure close to your South African users. The key decisions are which .NET runtime your app needs, how you'll deploy, and how the database is provided and backed up.
This guide covers what you need to know before choosing or moving to a Windows host.
When you need Windows hosting
You need Windows hosting if your application depends on something that only runs on Windows:
- ASP.NET Web Forms, MVC 5 or Web API 2 on the classic .NET Framework (4.x). These only run on Windows.
- Classic ASP sites.
- Apps that rely on Windows-specific components: COM objects, certain reporting tools, Windows authentication or the registry.
- A Microsoft SQL Server database that you prefer to keep on the same platform as the app.
Modern ASP.NET Core (on .NET 5 and later) is cross-platform and can also run on Linux. Many teams still choose Windows and IIS for it because that's what their tooling, skills and existing databases are built around, which is a perfectly valid reason.
.NET Framework vs modern .NET
This is the first thing to confirm, because it determines what the server needs.
| .NET Framework 4.x | Modern .NET (ASP.NET Core) | |
|---|---|---|
| Platforms | Windows only | Windows, Linux, macOS |
| Hosting on IIS | Runs natively in IIS | Runs behind IIS via the ASP.NET Core Module |
| Server requirement | .NET Framework installed | ASP.NET Core Hosting Bundle for the matching version |
| Deployment | Publish output, web.config |
Publish output, web.config generated on publish |
| Future | Maintained, no new major versions | Actively developed, new version yearly |
Check your project file: <TargetFrameworkVersion>v4.8</TargetFrameworkVersion> means .NET Framework, while <TargetFramework>net8.0</TargetFramework> (or later) means modern .NET.
Microsoft releases a new .NET version every year and alternates between long-term and standard-term support. Check Microsoft's .NET support policy and target a version that is still in support, then make sure your host has the matching hosting bundle installed.
How ASP.NET Core runs on IIS
For modern .NET, IIS acts as the front door and passes requests to your app through the ASP.NET Core Module. When you publish, the SDK generates a web.config like this:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\MyApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
The in-process hosting model runs your app inside the IIS worker process, which is the default and generally the faster option.
Deploying your app
Build a release version locally or in CI:
dotnet publish -c Release -o ./publish
Then copy the contents of ./publish to the site's folder on the server. Common deployment methods:
- Web Deploy (MSDeploy) directly from Visual Studio or a CI pipeline, if the host supports it.
- FTP/SFTP upload of the publish folder.
- A control panel file manager for small updates.
Tip: IIS locks your DLLs while the app runs. Dropping an app_offline.htm file in the site root makes the ASP.NET Core Module shut the app down cleanly so you can overwrite files; delete it when the upload finishes.
MS SQL databases
Most ASP.NET apps use SQL Server. With managed hosting, the host creates the database and a login for you, and you connect with a connection string in appsettings.json (modern .NET) or web.config (.NET Framework):
{
"ConnectionStrings": {
"Default": "Server=sql.example.co.za;Database=myapp;User Id=myapp_user;Password=REPLACE_ME;TrustServerCertificate=True;"
}
}
Better still, keep the password out of source control by setting it as an environment variable or through the host's configuration, and read it at runtime.
Ask your host:
- Which SQL Server version and edition is used?
- How are database backups taken, how long are they kept, and how do restores work?
- Can you connect remotely with SQL Server Management Studio, or only from the app?
- Are there database size limits?
For database fundamentals that apply across engines, see managed MySQL in South Africa, which covers the same "managed vs self-run" questions.
Why host a .NET app in South Africa
If your users are mainly South African, a local server means shorter round trips for every request, which helps both page loads and chatty APIs. Local hosting also means billing in rand with VAT invoices, and support during your working hours. POPIA doesn't forbid overseas hosting, but keeping personal information local can simplify your compliance story; see hosting in South Africa vs overseas.
Checklist for choosing Windows hosting
- Supports your .NET version (Framework 4.x and/or the modern .NET version you target)
- IIS with the ASP.NET Core Hosting Bundle installed, if you use modern .NET
- MS SQL Server included or available, with clear backup arrangements
- Deployment method that suits your workflow (Web Deploy, FTP, CI)
- Free SSL certificates and HTTPS redirect
- Access to logs for troubleshooting
- Servers in South Africa if your audience is local
- Support team that understands Windows and .NET
Frequently asked questions
Can I run ASP.NET Core on Linux instead of Windows?
Yes, ASP.NET Core is cross-platform. Whether you should depends on your dependencies and team; if you use Windows-only libraries, Windows authentication or the full .NET Framework, stick with Windows hosting.
What's the difference between Windows hosting and Linux hosting?
Windows hosting runs IIS and supports .NET Framework, classic ASP and MS SQL natively. Linux hosting typically runs Apache or Nginx with PHP, Node.js and MySQL. Choose based on what your application is written in.
Do I need a VPS for ASP.NET hosting?
Not necessarily. Managed Windows hosting covers most business websites and line-of-business apps. A VPS gives full control but makes you responsible for Windows updates, IIS configuration and security.
How do I move my ASP.NET site from another host?
Publish the app, back up the SQL database (a .bak file or a script), restore it on the new host, update the connection string and test before switching DNS. Our guide to migrating a website to a new host covers the DNS side.
NewHost offers Windows and ASP.NET hosting with MS SQL on custom quote, hosted in South Africa. Contact us with your .NET version and database size, and we'll put together a quote.