8.2 KiB
Troubleshooting: App Not Starting
🐛 Problem: "Nothing happens when I run the app"
This usually means the application is hanging during startup, most likely during database migration or seeding.
🔍 Quick Diagnostics
Step 1: Check What's in the Console
When you run dotnet run, you should see output. What do you see?
✅ GOOD - You should see this:
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:7001
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
❌ BAD - If you see this (or nothing):
Building...
[Hangs here - nothing else appears]
This means it's stuck during startup, likely during database migration.
🛠️ Solution 1: Skip Automatic Migrations (Recommended)
The issue is that the app tries to migrate the database on startup. Let's disable that temporarily.
Update Program.cs
Comment out the automatic migration section:
Find this section in src/PowderCoating.Web/Program.cs (around line 112-133):
// Seed database with initial data
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<ApplicationDbContext>();
var userManager = services.GetRequiredService<UserManager<ApplicationUser>>();
var roleManager = services.GetRequiredService<RoleManager<IdentityRole>>();
// Run migrations
await context.Database.MigrateAsync();
// Seed roles and admin user
await SeedData.InitializeAsync(services, userManager, roleManager);
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred while migrating or seeding the database.");
}
}
Replace it with:
// NOTE: Database seeding is disabled for now
// Run migrations manually with: dotnet ef database update
// Seeding will happen on first database update
// Uncomment below after you've created the database manually:
/*
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var userManager = services.GetRequiredService<UserManager<ApplicationUser>>();
var roleManager = services.GetRequiredService<RoleManager<IdentityRole>>();
// Seed roles and admin user (no migration here)
await SeedData.InitializeAsync(services, userManager, roleManager);
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred while seeding the database.");
}
}
*/
Then Manually Create the Database
cd src/PowderCoating.Web
# Create migration
dotnet ef migrations add InitialCreate --project ../PowderCoating.Infrastructure
# Apply migration
dotnet ef database update --project ../PowderCoating.Infrastructure
Now Run the App Again
dotnet run
It should start immediately!
🛠️ Solution 2: Check SQL Server Connection
If the app is hanging, it might be trying to connect to SQL Server but failing.
Is SQL Server Running?
Windows - Check Service:
Get-Service MSSQL$SQLEXPRESS
# If not running:
Start-Service MSSQL$SQLEXPRESS
Or use Services.msc:
- Press
Win + R - Type
services.msc - Find "SQL Server (SQLEXPRESS)"
- Check if it's running
Test Connection String
The app uses this connection string (in appsettings.json):
"Server=.\\SQLEXPRESS;Database=PowderCoatingDb;Trusted_Connection=true;MultipleActiveResultSets=true;TrustServerCertificate=true"
Test it manually:
- Open SQL Server Management Studio (SSMS) or Azure Data Studio
- Connect to:
.\SQLEXPRESS - If you can connect, SQL Server is running
If you can't connect, SQL Express might not be installed.
🛠️ Solution 3: Use LocalDB Instead
If SQL Express is giving you trouble, switch to LocalDB:
Update Connection String
Edit src/PowderCoating.Web/appsettings.json:
Change from:
"ConnectionStrings": {
"DefaultConnection": "Server=.\\SQLEXPRESS;Database=PowderCoatingDb;Trusted_Connection=true;MultipleActiveResultSets=true;TrustServerCertificate=true"
}
To:
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=PowderCoatingDb;Trusted_Connection=true;MultipleActiveResultSets=true"
}
Also update src/PowderCoating.Api/appsettings.json the same way.
Create Database
dotnet ef database update --project src/PowderCoating.Infrastructure --startup-project src/PowderCoating.Web
Run the App
cd src/PowderCoating.Web
dotnet run
🛠️ Solution 4: Verbose Logging
Let's see exactly where it's hanging.
Run with Detailed Logging
cd src/PowderCoating.Web
dotnet run --verbosity diagnostic
This will show you EXACTLY where it stops.
Check the Log File
Look in: logs/powdercoating-YYYYMMDD.txt
The last line before it hangs will tell you what's wrong.
🛠️ Solution 5: Complete Clean Rebuild
Sometimes old build artifacts cause issues.
# From solution root
dotnet clean
rm -rf **/bin **/obj
# Restore packages
dotnet restore
# Build
dotnet build
# Run
cd src/PowderCoating.Web
dotnet run
📋 Diagnostic Checklist
Work through these in order:
- Check console output - What's the last line you see?
- Is SQL Server running? - Check the service
- Can you connect to SQL Server? - Try SSMS/Azure Data Studio
- Comment out auto-migration - Use Solution 1 above
- Create database manually - Use
dotnet ef database update - Try running again - Does it work now?
- Check logs folder - Look at the log file
- Try LocalDB - If SQL Express isn't working
🎯 Most Likely Issue
90% of the time, the issue is:
The app is trying to connect to SQL Express but:
- SQL Express isn't running, OR
- SQL Express isn't installed, OR
- The connection string is wrong
Quick fix:
- Comment out the auto-migration code (Solution 1)
- Use LocalDB instead (Solution 3)
- Run the app - it should start immediately
- Create the database manually with
dotnet ef database update
💡 Expected Behavior
When Working Correctly:
$ cd src/PowderCoating.Web
$ dotnet run
Building...
Build succeeded.
0 Warning(s)
0 Error(s)
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:7001
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Projects\PowderCoatingApp\src\PowderCoating.Web
Then: Open browser to https://localhost:7001 and you see the home page.
🆘 Still Not Working?
Share these details:
- What OS are you on? (Windows, Mac, Linux)
- What's the last line you see when running
dotnet run? - Is SQL Server installed? How did you install it?
- What's in the log file? (
logs/powdercoating-*.txt) - Does this work?
dotnet ef --version
With these details, I can provide more specific help!
✅ Quick Win
Try this right now:
-
Stop the app if it's running (Ctrl+C)
-
Edit Program.cs - Comment out lines 112-133 (the entire seeding block)
-
Run the app:
dotnet run -
You should see:
Now listening on: https://localhost:7001 -
Open browser to https://localhost:7001
-
You'll see an error about missing database - that's OK!
-
Stop the app (Ctrl+C)
-
Create database:
dotnet ef database update --project ../PowderCoating.Infrastructure -
Run again:
dotnet run -
Now it should work! Navigate to https://localhost:7001/Identity/Account/Login
This bypasses the automatic migration that's causing the hang.