Update DNN 9.x -> 10.x for core 2sxc development
DNN 10 is a major release with breaking changes. This recipe is written for a local 2sxc dnn development environment.
Reference environment used while writing this: D:\Projects\2sxc\2sxc-dnn\Website -> http://2sxc-dnn.dnndev.me/, DNN 9.11.2 -> DNN 10.3.3.
1. Decide the Target Versions
DNN publishes a mandatory Suggested Upgrade Path.
| From |
To |
Why this hop |
| 09.11.02 |
09.13.09 |
last 9.x stepping stone; do the Telerik removal here (download upgrade package) |
| 09.13.09 |
10.02.05 |
the big one - .NET 4.8, SQL 2017, forced Telerik removal, API removals (download upgrade package) |
| 10.02.05 |
10.03.03 |
current release, uses the new in-product upgrade (download install package) |
Notes:
- 2sxc compatibility: DNN 10.02+ requires 2sxc v21.01 or newer - see the Dnn Platform compatibility table. Older 2sxc will not work on DNN 10.2+.
- Everything below DNN 10.2.2 has open CVEs.
2. Prerequisites
- .NET Framework 4.8 installed (DNN 10.0.0 minimum), so just update your Windows 11 and VS2026 to latest version.
- SQL Server 2017 (14.x) or newer (DNN 10.0.0 minimum)
- Download all three DNN Upgrade or Install packages from the release pages above
3. Backups
Do not skip this on a dev box either - you will want to retry the upgrade more than once.
- Full SQL backup of the dnn database
- File copy of the whole website folder (
D:\Projects\2sxc\2sxc-dnn\Website)
4. web.config Settings
<add key="AutoUpgrade" value="false" /> - you want the wizard, not a silent upgrade
<add key="UseInstallWizard" value="true" />
- For the 10.2.5 -> 10.3.3 hop, if the upload button is missing in the Persona Bar, add:
<add key="AllowDnnUpgradeUpload" value="true" />
- Clean large web.config after many upgrades
5. Run the Upgrades
5a. Classic method - for everything up to 10.2.x
- Stop the app pool (or sometimes you can use app_offline.htm)
- Unzip the Upgrade package over the website folder, overwriting existing files
- Start the app pool
- Browse to the site - the upgrade wizard starts automatically, or go to
https://2sxc-dnn.dnndev.me/install/upgradewizard.aspx
- Watch it to completion, do not navigate away
- In case of error check
Website\Providers\DataProviders\SqlDataProvider\*.log.resources - a empty file means the script ran clean; anything larger contains errors
- Repeat for the next hop
5b. New method - from 10.2.0 onwards
Starting with DNN 10.2.0 there is an in-product upgrade. See the Post-10.2.0 Upgrade Guide.
- Go to
Settings -> Servers -> System Info -> Upgrades
- Upload the 10.3.3 Install package there (do not unzip it over the folder)
- If you are coming from exactly 10.2.3, its upload feature is broken: copy the Install package into
Website\App_Data\Upgrade\ manually instead
- DNN drops an
app_offline.htm while unpacking (10.3.0+) - let it finish
Fix: Execution Timeout Expired During the SQL Scripts
Symptom - the wizard stops early with:
System.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired.
Why it happens - DNN calls SqlDataProvider.ExecuteScript(script, 0), where every upgrade statement runs with the ADO.NET default of 30 seconds. The statement has to finish inside 30 s, or you run it by hand.
Fix:
- Identify which statements failed: open the largest
*.log.resources file in Website\Providers\DataProviders\SqlDataProvider\
- Stop the app pool - a full stop, not
app_offline.htm
- Run SqlDataRPovder script in SSMS, which has no command timeout.
- Start the app pool and re-run
Install/Install.aspx?mode=upgrade
The same approach works for any failing statement: DNN logs the exact SQL it tried, so pull it out of the log file and run it manually.
6. Update 2sxc
Do this after DNN reaches its final version, not between hops.
- Install 2sxc v21.08.00 or newer via
Settings -> Extensions -> Install Extension
Reference Links