If your host doesn’t allow InProcess, switch to OutOfProcess and use Kestrel behind IIS.
Step 3: Verify
Visit your domain. If you see a 500 error, check:
The host supports your runtime version.
Your deployment mode (portable vs self‑contained).
Logs in the /logs folder (enable stdoutLogEnabled in web.config).
Common Shared Hosting Gotchas
Runtime mismatch → Your app targets .NET 8, but host only supports .NET 6.
Permissions → Make sure logs folder has write permissions.
Timeouts → Shared hosting often limits long‑running processes.
No IIS Manager → You can’t tweak app pools; rely on host defaults.
✅ Pro tip: If you want fewer headaches, use Self‑Contained Deployment — it makes your app independent of the host’s runtime version. Downside: larger upload size.