Migrating WebForms to .NET 10 without downtime
.NET

Migrating WebForms to .NET 10 without downtime

Brian Montesdeoca 10 June 2025 1 min read
Migrating WebForms to .NET 10 without downtime

A full rewrite of a WebForms application means a long period with no delivered value and a hard cut-over. We avoid both by applying the strangler pattern: new functionality is built on .NET 10 behind a routing layer, and traffic moves module by module while the legacy application keeps running.

What to move first
Start with the module that changes most often, not the one that looks most impressive. Every week spent modernising a page nobody edits is a week not spent reducing the cost of the pages your team touches daily.

What to leave alone
A stable page with no pending changes and no security exposure is not a priority. Moving it anyway just to finish the migration adds risk without adding value — leave it running until it genuinely needs to change.

Proving the migration
Each module that moves is covered by characterisation tests written against the old behaviour first, so the migration can be proved rather than hoped for. A shared authentication cookie lets both applications run side by side, so users never see two logins.

Related service: WebForms and .NET modernisation.

.NET 10AzureDelivery
Worktechlabs

Written by

Brian Montesdeoca

About the team and our articles

Want to discuss this with the team?

We are happy to talk through how this applies to your own system.

Get in touch

Let's talk

What would you like to improve in your business?

Discuss your project 020 3883 2194

We use cookies

Necessary cookies keep the site working. With your permission we also use analytics cookies. Google receives basic measurement signals without analytics cookies before you accept or if you reject. You can change your cookie choice at any time. See our cookie policy.

Privacy settings

Cookie preferences

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.