< Previous Challenge — Home — Next Challenge >
The ContosoUniversity application is a university management system built on ASP.NET MVC 5 targeting .NET Framework 4.8. It has several dependencies that are tightly coupled to the Windows on-premises world:
System.Messaging(MSMQ) — Microsoft Message Queuing is a Windows-only technology used by theNotificationService. It has no equivalent in .NET (Core) and must be replaced with a cloud-native messaging service.- Local file system storage — teaching materials are uploaded to
Uploads/TeachingMaterials/on disk, which is incompatible with stateless containerized deployments. - ASP.NET MVC 5 /
System.Web— the entireSystem.Webstack was not ported to .NET Core. Every controller, filter, and configuration element must be migrated to the ASP.NET Core equivalents. packages.config+.csprojformat — the legacy project format must be converted to the SDK-style.csproj.
The target state is:
- .NET 10 with ASP.NET Core MVC
- Azure Service Bus replacing MSMQ
- Azure Blob Storage replacing the local file system uploads folder
- Azure SQL Database (EF Core updated to latest)
Note: This challenge can be worked on in parallel with the Java track by different members of your team.
Modernize the ContosoUniversity .NET application to:
- .NET 10 ASP.NET Core MVC
- Azure Service Bus for notification messaging (replacing
System.Messaging) - Azure Blob Storage for teaching material uploads (replacing local file system)
- Latest EF Core with Azure SQL Database
Your approach should include:
- Use the GitHub Copilot Modernization tool to generate a migration plan with a goal that captures all migration objectives above
- Review the generated migration plan before executing it
- Execute the migration plan using the appropriate tool command
- Use GitHub Copilot Chat to resolve compilation errors that automated tools cannot handle
- Convert
Web.configapplication settings toappsettings.json - Update
NotificationService.csto use the Azure Service Bus SDK (Azure.Messaging.ServiceBus) - Replace file upload code with the Azure Blob Storage SDK (
Azure.Storage.Blobs)
To complete this challenge successfully, demonstrate:
- The application builds successfully with no errors targeting .NET 10
- The application starts without runtime errors
- The Notifications feature uses Azure Service Bus (show the
NotificationService.csusingServiceBusClient) - File upload functionality references Azure Blob Storage (show the upload controller using
BlobContainerClient) - A fresh assessment on the updated codebase reports no remaining mandatory blockers for the .NET Framework 4.8 → .NET 10 migration
- No references to
System.Messaging,System.Web, orpackages.configremain - Explain to your coach — why was
System.Webnever ported to .NET Core? What does this mean for every controller, filter, and configuration that references it? - Explain to your coach — what did
modernize plan executedo that you could not have accomplished with a bulk find-and-replace?
- Porting from .NET Framework to .NET — overview
- .NET Upgrade Assistant
- Migrate from ASP.NET MVC to ASP.NET Core MVC
- Azure Service Bus SDK for .NET
- Azure Blob Storage SDK for .NET
- Build the application early and often after each significant change to catch issues incrementally rather than all at once.
Global.asaxstartup logic must be migrated toProgram.csusing the ASP.NET Core host builder pattern.- The
HtmlHelperandUrlHelperextension methods work differently in ASP.NET Core Tag Helpers — Copilot Chat can help you convert Razor views.