.NET · 10.0.402
.NET hosting, 24/7
Ship a minimal API, an ASP.NET Core service or a C# worker and leave it running. The platform recognizes the project from the .csproj or the .sln, runs dotnet publish while the image is built and starts the result in an isolated container.
Who designed .NET
Microsoft introduced .NET in 2000, and C# was born with it, under the architecture of Anders Hejlsberg, the same person behind Turbo Pascal and Delphi. For over a decade it ran only on Windows; .NET Core 1.0, in 2016, opened the source and brought Linux and macOS, and in 2020 .NET 5 merged the lines into one.

Anders Hejlsberg
DBegley · CC BY 2.0
Typed language, managed runtime
C# is compiled to an intermediate language and executed with garbage collection and JIT compilation. The compiler catches type errors before the service starts.
Cross-platform and open
Since .NET Core, the same code runs on Linux, macOS and Windows, with development on GitHub. The Linux container stopped being the exception.
The web is in the box
ASP.NET Core ships the Kestrel server, routing, dependency injection and minimal APIs. A complete API fits in a few lines of Program.cs.
What the platform does for a .NET project
The build and the container are the platform's job; your code only has to listen on the right port.
Detection from .csproj and .sln
With a .csproj or a .sln in the zip or the repository, the platform knows it is .NET and picks the runtime on its own. You do not write a Dockerfile or choose a base image.
dotnet publish at build time
NuGet package restore and compilation happen while the image is built, not on every boot. A compile error shows up in the build log instead of turning into a crash in production.
RAM ceiling in the config file
MEMORY sets how much memory the container can use, and the dashboard shows real usage next to the ceiling. If the process exceeds the limit, it is killed by OOM and the event is recorded in the log.
Auto-restart with a brake
An unhandled exception does not leave the service down: the process is restarted on its own, on every plan. If it breaks 5 times in 10 minutes, the platform flags a crash loop and turns auto-restart off for 24 hours. Exiting with code 0 does not trigger a restart.
What people run on .NET here
From a lean HTTP service to a background process with no port at all.
Minimal APIs and ASP.NET Core
Publish the application to get a vertraweb.app subdomain with TLS. ASP.NET Core already listens on the platform port with no configuration: there is no need to set ASPNETCORE_URLS or UseUrls.
Workers with BackgroundService
A queue consumer, a periodic routine, an integration with an external service: a Worker Service runs as a process with no HTTP port, with MEMORY visible in the dashboard.
Discord and Telegram bots in C#
Discord.Net and Telegram.Bot run as long-lived processes. The token goes in the dashboard environment variables, never in an appsettings.json inside the zip.
Native connector to a managed database
A PostgreSQL 17 or MySQL 8.0 created in the same dashboard talks to Npgsql or Entity Framework Core over the internal host. TLS is mandatory, and the client certificate and password go from the dashboard straight into the connection string.
Available .NET versions
10.0.402 is both the recommended and the latest. With no VERSION in vertracloud.config, the application starts on the recommended one.
| Version | vertracloud.config | Status |
|---|---|---|
| 10.0.402 | VERSION=10.0 | RecommendedLatest |
The whole configuration
vertracloud.config is an optional INI file at the project root. MAIN points at the project to publish; VERSION picks the .NET line; MEMORY sets the container RAM ceiling.
NAME=minha-api
MAIN=MinhaApi.csproj
VERSION=10.0
MEMORY=512A plan for every stage of the project
Memory and storage change with the plan; the language does not. Compare what each plan unlocks and pick the one that fits the project today.
Compare plansAlso runs here
Same platform, same deploy, a different stack.
Frequently asked questions about .NET hosting
Version, port and build: the questions people ask most when they deploy .NET.
Which .NET version can I use?
Today, 10.0.402, which is both the recommended and the latest. You can declare the line with the VERSION key in vertracloud.config; without it, the application starts on the recommended one.
Do I need to compile before sending the zip?
No. Send the source with the .csproj or the .sln and let dotnet publish run in the platform build, for Linux. Leave the bin and obj folders out of the package: they are rebuilt and only enlarge the zip, which is capped at 100 MB.
The API starts, but the subdomain does not respond.
ASP.NET Core listens on the platform port with no configuration. Check that the application is published to the web, which requires 512 MB of RAM and is available from the Pro plan up, and that your code does not pin another port with UseUrls or ASPNETCORE_URLS.
I have a solution with several projects. Which one is published?
Point MAIN at the .csproj of the executable project, the one with Program.cs, or at the .sln. The other projects in the solution come in as references and are compiled along with it.
How do I pass the connection string and other secrets?
In the dashboard environment variables tab: they are injected into the container at startup and encrypted at rest. ASP.NET Core reads environment variables through its default configuration; an appsettings.json inside the zip is no place for a secret.
Deploy your .NET service today
Create the account, upload the code with the .csproj or the .sln, or connect the GitHub repository, and follow dotnet publish in the dashboard terminal.
Create account