.NET on AWS Blog

Modernize ASP.NET Web Forms UI to Blazor with AWS Transform

AWS Transform is an agentic service that accelerates modernization, including .NET applications. With it, you can transform .NET Framework Windows applications to cross-platform .NET and reduce operating costs up to 40% by running on Linux. For ASP.NET web applications, AWS Transform can port the UI layer to ASP.NET Core. In this post, I’ll explain how to transform ASP.NET Web Forms UI to modern .NET.

I’ll first explain how Web Forms porting works, then walk you through the steps to transform a Web Forms application with AWS Transform. When we’re done, we’ll have transformed a .NET Framework 4.8 Web Forms application to a .NET 10 Blazor application.

How Web Forms to Blazor porting works

Because Web Forms is not supported on ASP.NET Core, it is necessary to move to a supported UI (“apples to oranges” porting). AWS Transform rewrites your Web Forms UI layer code for Blazor with server-side hosting.

The following table shows how Web Forms files map to Blazor files.

From To Description
*.aspx, *.ascx *.razor .aspx pages and .ascx custom controls become .razor files
Web.config appsettings.json Web.config settings become appsettings.json settings
Global.asax Program.cs Global.asax code becomes Program.cs code
*.master *layout.razor Master files become layout.razor files

Project structure after transformation

In the transformed Blazor project, files reside in the following project locations, shown visually in Figure 1.

  • Components folder: All razor components (*.razor) are placed in a Components folder, at the same level as the .csproj file.
  • Pages mapping: Web Forms pages (*.aspx) become .razor files in Components/Pages.
  • Controls mapping: Web Forms controls (*.ascx) become .razor files in Components.
  • Static files mapping: .css, .js, and image files are placed in the wwroot folder.
Before and after transformation project structure with arrows showing file mappings.

Figure 1: File transformation mapping

Limitations and unsupported features

Currently, AWS Transform supports transformation of Web Application projects with a .csproj file. If instead you have Web Site projects, you must convert them over to Web Application projects in order to use AWS Transform. You can find Microsoft conversion guidance at Converting a Web Site Project to a Web Application Project.

The following features are not supported at present. If your applications use them, you’ll need to handle that part of the porting yourself or with an AI code companion.

  • .asmx files (XML web service)
  • .svc files (service files)
  • .ashx files (generic handler files)
  • Service references & web references (reference.map, reference.cs, .wsdl files)
  • Third-party vendor UI libraries/controls

Walkthrough

In this walkthrough, we’ll transform eShop, a public Web Forms sample, from ASP.NET to ASP.NET Core using AWS Transform in Visual Studio 2026.

Prerequisites

If you care to follow along and perform the walkthrough on your own machine, be sure you have the following:

  1. A Windows development machine.
  2. Visual Studio 2026 is installed.
  3. AWS Toolkit is installed from Visual Studio Marketplace (latest version).
  4. AWS Transform setup is complete.
  5. An IAM Identity Center user credential for AWS Transform.

Step 1: Setup

In this step, you’ll download the sample application and get familiar with it.

  1. Download the eShop sample from GitHub, which contains a Web Forms project.
  2. Open the eShopLegacyWebForms project in Visual Studio.
  3.  Confirm the eShop project is a .NET Framework 4.8 project, and that it builds, as shown in Figure 2.
Screenshot of Web Forms project in Visual Studio showing .NET Framework version and successful build.

Figure 2: eShop in Visual Studio

  1. Run the app with F5 or Debug > Start Debugging to see its appearance and behavior, then stop debugging. It should look like Figure 3.
Screenshot of original eShop application running in browser.

Figure 3: eShop Web Forms app running in browser

Step 2: Sign in to AWS Transform

Next, we’ll sign in to AWS Transform.

  1. From the Visual Studio menu, select Extensions > AWS Transform > Getting Started.
  2. On the AWS Transform panel, sign-in to AWS Transform with your IAM Identity Center credentials. Once you complete sign-in, Connected with IAM Identity Center should appear in the panel, as shown in Figure 4.
Screenshot of AWS Toolkit Getting Started screen with AWS Transform panel.

Figure 4: Signed in to AWS Transform

Step 3: Transform the application

Now we’re ready to transform. Let’s get a transformation job started.

  1. Open a .cs code file from the solution in the code editor, such as Default.aspx.cs.
  2. In Solution Explorer, right-click the eShop project and choose Port project with AWS Transform.
  3. On the Port project dialog, shown in Figure 5, create or choose a workspace and set the .NET target to net10.0.
Screenshot of port project with AWS Transform dialog showing target of .NET 10.

Figure 5: Port project dialog

  1. Choose Start to begin the transformation. You’ll soon see a notification at top confirming that a transformation job is in progress, as shown in Figure 6. You can view job progress in the AWS Transform Hub window.
Screenshot of transformation job started notification in Visual Studio.

Figure 6: Transformation job started

  1. After a few minutes, AWS Transform will ask if you want to review a transformation plan. Choose Continue with Transformation.
  2. As the code is transformed, monitor transformation progress and view details in the AWS Transform Hub window, shown in Figure 7.
Screenshot of AWS Transform Hub progress steps and details in Visual Studio.

Figure 7: AWS Transformation Hub

  1. Wait for the transformation to complete. When it finishes, a Your transformation is completed notification will appear at the top of Visual Studio, shown in Figure 8.
Screenshot of transformation complete notification in Visual Studio.

Figure 8: Transformation complete

Step 4: Review the transformation report

Let’s understand what AWS Transform did, and why.

  1. Choose View code transformation summary and then Download transformation report.
  2. Open the HTML transformation report and review the description of what was changed, shown in Figure 9. In our case, we see UI-related changes under the Application Model and Routing & Navigation sections.
Transormation report showing Web Forms to Blazor transformation details.

Figure 9: Transformation Report

  1. Choose View code transformation summary and then View diffs. A list of file changes appears, where you can view added, modified, renamed, or removed code files.
  2. Review the file changes to see what was added, removed, and modified. Give special attention to added .razor files such as Default.razor, shown in Figure 10.
  3. Also note using statement changes to .cs files, which no longer use System.Data.Entity and instead use Microsoft.EntityFrameworkCore namespaces.
Screenshot of Visual Studio showing code diffs.

Figure 10: Reviewing code diff changes

Step 5: Apply the code changes

Now, we’ll apply the code changes and examine the updated application.

  1. On the View diff list, choose Select all and then Apply changes. The file changes are applied to your project, and Visual Studio prompts you to reload all files.
  2. In Solution Explorer, check the project properties. eShop is now a .NET 10 project, as shown in Figure 11.
  3. Review the solution structure. It is now a Blazor project, with .razor files.
  4. Next, build the solution. In our case, there were no build errors.
Screenshot of Visual Studio showing transformed application is .NET version 10.

Figure 11: Application is .NET 10 and is now a Blazor project.

Step 6: Complete porting

AWS Transform does the heavy lifting in modernizing your code, but a transformed application is not necessarily complete, even if it builds. As the developer, your role is to review the application for correctness and complete any remaining porting tasks. There may be build errors or runtime errors to address. In my example, I had runtime errors and used an AI code companion to resolve them. If the project does not build, review the transformation report from Step 4, which provides details and advice about build errors as well as a downloadable Next Steps prompt.

I changed “Web Forms” to “Blazor” in the MainLayout.razor page to display the new platform. You can see the transformed ASP.NET Core Blazor code running on .NET 10 in Figure 12.

Screenshot of transformed Blazor application running in browser.

Figure 12: Transformed Blazor application running

Conclusion

AWS Transform provides full-stack Windows modernization, including ASP.NET UI porting to ASP.NET Core. In this post, we learned how to port Web Forms UI to Blazor on ASP.NET Core. AWS Transform can also port MVC Razor UI. For more information about AWS Transform, refer to the AWS Transform User Guide.

David Pallmann

David Pallmann

David Pallmann is a senior product manager on the AWS Transform team who focuses on the .NET developer experience. David has previously served in engineering, consulting, product, and tech manager roles. He worked on WCF, and later created Neuron ESB, the first .NET-based enterprise service bus. Follow him on X at @davidpallmann.