# 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): ```csharp // Seed database with initial data using (var scope = app.Services.CreateScope()) { var services = scope.ServiceProvider; try { var context = services.GetRequiredService(); var userManager = services.GetRequiredService>(); var roleManager = services.GetRequiredService>(); // Run migrations await context.Database.MigrateAsync(); // Seed roles and admin user await SeedData.InitializeAsync(services, userManager, roleManager); } catch (Exception ex) { var logger = services.GetRequiredService>(); logger.LogError(ex, "An error occurred while migrating or seeding the database."); } } ``` **Replace it with:** ```csharp // 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>(); var roleManager = services.GetRequiredService>(); // Seed roles and admin user (no migration here) await SeedData.InitializeAsync(services, userManager, roleManager); } catch (Exception ex) { var logger = services.GetRequiredService>(); logger.LogError(ex, "An error occurred while seeding the database."); } } */ ``` ### Then Manually Create the Database ```bash 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 ```bash 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:** ```powershell Get-Service MSSQL$SQLEXPRESS # If not running: Start-Service MSSQL$SQLEXPRESS ``` **Or use Services.msc:** 1. Press `Win + R` 2. Type `services.msc` 3. Find "SQL Server (SQLEXPRESS)" 4. Check if it's running ### Test Connection String The app uses this connection string (in `appsettings.json`): ```json "Server=.\\SQLEXPRESS;Database=PowderCoatingDb;Trusted_Connection=true;MultipleActiveResultSets=true;TrustServerCertificate=true" ``` **Test it manually:** 1. Open SQL Server Management Studio (SSMS) or Azure Data Studio 2. Connect to: `.\SQLEXPRESS` 3. 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:** ```json "ConnectionStrings": { "DefaultConnection": "Server=.\\SQLEXPRESS;Database=PowderCoatingDb;Trusted_Connection=true;MultipleActiveResultSets=true;TrustServerCertificate=true" } ``` **To:** ```json "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=PowderCoatingDb;Trusted_Connection=true;MultipleActiveResultSets=true" } ``` Also update `src/PowderCoating.Api/appsettings.json` the same way. ### Create Database ```bash dotnet ef database update --project src/PowderCoating.Infrastructure --startup-project src/PowderCoating.Web ``` ### Run the App ```bash cd src/PowderCoating.Web dotnet run ``` --- ## 🛠️ Solution 4: Verbose Logging Let's see exactly where it's hanging. ### Run with Detailed Logging ```bash 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. ```bash # 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: 1. SQL Express isn't running, OR 2. SQL Express isn't installed, OR 3. The connection string is wrong **Quick fix:** 1. Comment out the auto-migration code (Solution 1) 2. Use LocalDB instead (Solution 3) 3. Run the app - it should start immediately 4. Create the database manually with `dotnet ef database update` --- ## 💡 Expected Behavior ### When Working Correctly: ```bash $ 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: 1. **What OS are you on?** (Windows, Mac, Linux) 2. **What's the last line you see** when running `dotnet run`? 3. **Is SQL Server installed?** How did you install it? 4. **What's in the log file?** (`logs/powdercoating-*.txt`) 5. **Does this work?** `dotnet ef --version` With these details, I can provide more specific help! --- ## ✅ Quick Win **Try this right now:** 1. **Stop the app** if it's running (Ctrl+C) 2. **Edit Program.cs** - Comment out lines 112-133 (the entire seeding block) 3. **Run the app:** ```bash dotnet run ``` 4. **You should see:** ``` Now listening on: https://localhost:7001 ``` 5. **Open browser** to https://localhost:7001 6. **You'll see an error** about missing database - that's OK! 7. **Stop the app** (Ctrl+C) 8. **Create database:** ```bash dotnet ef database update --project ../PowderCoating.Infrastructure ``` 9. **Run again:** ```bash dotnet run ``` 10. **Now it should work!** Navigate to https://localhost:7001/Identity/Account/Login This bypasses the automatic migration that's causing the hang.