ASP.NET & .NET Development

Working with ASP.NET Core on Windows Server 2019: A Plesk Guide

By the Domain India teamPublished 7 min read
Knowledge base article
Contents (8 sections)

ASP.NET Core runs well on Domain India Windows hosting, but it runs differently from the older .NET Framework. IIS does not execute your code itself: it hands each request to your app through the ASP.NET Core Module, and a small web.config tells it how. This guide explains that model and the settings that decide whether an ASP.NET Core app starts cleanly in Plesk.

Key takeaways

On Windows hosting, IIS starts your ASP.NET Core app through the ASP.NET Core Module, using the web.config that dotnet publish creates. Target a .NET version that Plesk lists for your domain, or publish self-contained. Upload the published output into httpdocs, keep web.config, and read the stdout log when the app fails with a 500.3x error. For the full upload walkthrough, see the ASP.NET deployment guide.

Looking for the upload steps?

This article covers what is specific to ASP.NET Core. The complete step-by-step deployment, including FTP settings and app_offline.htm, is in How to deploy an ASP.NET application in Plesk.

1. How IIS runs an ASP.NET Core app

An ASP.NET Core app is a self-contained web server (Kestrel) inside your DLL. On Windows hosting, IIS sits in front of it:

  1. A request arrives at IIS for your domain.
  2. The ASP.NET Core Module (AspNetCoreModuleV2) picks it up, because web.config registers it as the handler for every path.
  3. The module starts your app if it isn't running, then passes the request in.

Two hosting models exist. In-process (the default for new projects) runs your app inside the IIS worker process and is faster. Out-of-process runs your app as a separate process behind IIS. Keep the default unless you have a specific reason to change it.

Because the module handles every request, static files come from your app's wwwroot folder through UseStaticFiles(), not from IIS directly.

2. Check the .NET version before you build

The versions installed on the server can change over time, so check before you choose a target framework. In Plesk, open your domain under Websites & Domains and look at its hosting or ASP.NET settings for the list of available versions.

Your situationWhat to do
Your target (for example net8.0) is listedPublish framework-dependent; the upload is small
Your target is not listedRetarget to a listed version, or publish self-contained for win-x64
Unsure which runtime the app needsLook at TargetFramework in your .csproj

A self-contained build carries its own runtime, so it works even when the server lacks your version, at the cost of a much larger upload. If neither route suits you, ask support before you deploy rather than discovering the problem from a startup error.

3. Publish, don't copy your source

Upload the output of dotnet publish, never the project folder:

bash
dotnet publish -c Release -o ./publish

Or, self-contained:

bash
dotnet publish -c Release -r win-x64 --self-contained true -o ./publish

Copy the contents of publish into httpdocs, so that web.config and your main DLL sit directly inside it. Windows hosting has no SSH, so upload with FTP on port 21 using explicit TLS, or the Plesk File Manager.

4. The web.config that matters

dotnet publish writes the web.config for you. The key line is the aspNetCore element:

xml
<aspNetCore processPath="dotnet" arguments=".\MyApp.dll"
            stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"
            hostingModel="inprocess" />
  • arguments must name your real DLL. A renamed project with an old web.config is a common cause of startup failures.
  • Self-contained builds use processPath=".\MyApp.exe" with empty arguments.
  • Environment variables go inside the element as environmentVariables. ASP.NET Core assumes Production when nothing is set, which is what a live site should use.

Keep web.config valid XML. One broken tag stops the whole site with an HTTP 500.19.

5. Configuration and secrets

ASP.NET Core reads appsettings.json, then appsettings.{Environment}.json, then environment variables. On hosting:

  • put production values, such as the connection string, in appsettings.Production.json or in environmentVariables in web.config;
  • keep development values in appsettings.Development.json and don't rely on them in production;
  • never leave copies such as appsettings.json.bak or a .zip of the site in httpdocs.

For the database connection string format, see What to use for the MSSQL connection string.

6. Restarts and application pools

Your app restarts when you change web.config, when you upload app_offline.htm and remove it, and when IIS recycles its application pool. After a recycle or an idle period, the first request is slower while the app starts again.

Pool controls appear in Plesk only when your plan gives your subscription a dedicated application pool; ASP Enterprise lists one. Without them, restart the app by re-saving web.config, or ask support. The details are in the IIS application pools guide.

7. Reading startup errors

ErrorMeaningFirst check
500.19web.config is invalid or uses a locked settingValidate the XML
500.30The app crashed while startingTurn on the stdout log
500.31 / 500.32Runtime missing, or a 32/64-bit mismatchRetarget or publish self-contained
503App offline or the pool stoppedRemove app_offline.htm; see the 503 guide

To see the real exception, set stdoutLogEnabled="true", create an empty logs folder in httpdocs, reload the site and download the newest log file. Turn it off again afterwards. More on logs: How to check Plesk logs.

8. Where Domain India Windows hosting fits

Every Domain India Windows plan is managed in Plesk and runs ASP.NET Core, .NET Framework and MSSQL. The cards show live prices, excluding 18% GST.

ASP Business
₹328.83/mo + GST
  • 30 GB Storage
  • 150 GB Monthly Bandwidth
  • 5 Websites
  • 50 Email Accounts
See plan details
ASP Enterprise
₹493.70/mo + GST
  • 100 GB Storage
  • Unmetered Bandwidth
  • 15 Websites
  • 100 Email Accounts
See plan details

Choose ASP Enterprise if you want a dedicated application pool that you can recycle yourself. New shared hosting purchases, Windows included, can be refunded in full within 30 days under our refund policy. For an overview of the whole account, read the Plesk Windows hosting guide.

Does Domain India Windows hosting support ASP.NET Core?

Yes. Publish the app with dotnet publish, upload the output into httpdocs, and keep the web.config that the publish step creates. Check in Plesk that the .NET version your app targets is available, or publish self-contained.

Which hosting model should I use, in-process or out-of-process?

Keep in-process, the default for new ASP.NET Core projects. It runs inside the IIS worker process and is faster. Change it only if a library you use requires out-of-process hosting.

What does HTTP Error 500.30 mean?

The ASP.NET Core app failed while starting. Turn on the stdout log in web.config, create a logs folder in httpdocs, reload the site and read the newest log file for the exception. Turn the log off afterwards.

Can I install a .NET runtime myself?

No. On shared Windows hosting you cannot install software on the server. Target a version Plesk lists for your domain, publish self-contained, or ask support.

How do I set ASPNETCORE_ENVIRONMENT?

Add an environmentVariables block inside the aspNetCore element of web.config. If you set nothing, ASP.NET Core runs as Production.

Can I use SSH or the dotnet CLI on the server?

No. Windows hosting has no SSH. Build and publish on your own computer, then upload with FTP using explicit TLS or the Plesk File Manager.

Ready to run your ASP.NET Core app? Compare the Windows hosting plans, follow the deployment guide, or open a ticket if the app won't start. Support is on 24/7 live chat, and tickets get a first response within 15 minutes.

Host your ASP.NET Core app

Plesk, IIS and MSSQL on every Windows plan, with a 30-day refund on new shared hosting.

See Windows hosting plans

Was this article helpful?

Your answer helps us decide what to improve next.

Still need help? Open a support ticket and our team will reply.

Prefer an app? Add this site to your home screen.Get the app
ASP.NET Core on Plesk Windows Hosting: A Guide