
Introduction
Swagger helps developers test and document APIs in ASP.NET Core. It shows all API endpoints in one place and lets you send requests from the browser.
However, many developers face a common issue:
Swagger is not showing in ASP.NET Core.
You may see:
/swaggerreturning 404 Not Found- Swagger UI not loading
- Swagger working in Development but not in Production
- The API running fine, but Swagger missing
This usually happens due to configuration or middleware issues, not because Swagger is broken.
In this guide, you will learn why Swagger does not show and how to fix it step by step using simple explanations.
Why Swagger Is Important in ASP.NET Core
Swagger is more than just a documentation tool. It helps developers understand and test APIs quickly.
With Swagger, you can:
- See all API endpoints in one place
- Check request and response formats
- Test APIs without Postman
- Share API details with frontend teams
When Swagger does not show, development becomes slower. Teams waste time guessing API behavior. That is why fixing Swagger issues early is very important.
What Does “Swagger Not Showing” Mean?
When Swagger is not showing, it means:
- Swagger is not enabled correctly
- ASP.NET Core is blocking it
- The environment settings disable it
Swagger depends fully on your application setup.
Common Reasons Swagger Is Not Showing
Most Swagger problems happen due to:
- Missing Swagger services
- Swagger UI middleware not enabled
- Swagger enabled only in Development
- Wrong middleware order
- Authentication blocking Swagger
- HTTPS or routing problems
Let’s fix each issue one by one.
1. Swagger Services Not Added
Problem
Swagger UI cannot load if you do not register its services.
Solution
Add these lines in Program.cs:
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
Without this, Swagger has no API data to show.
2. Swagger Middleware Not Enabled
Problem
Swagger services exist, but the UI does not appear.
Solution
Enable Swagger middleware:
app.UseSwagger();
app.UseSwaggerUI();
Now access Swagger at:
/swagger
3. Swagger Works Only in Development
Problem
Swagger shows locally but not on staging or production.
Cause
Most templates enable Swagger only in Development:
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
Fix Options
Enable Swagger everywhere:
app.UseSwagger();
app.UseSwaggerUI();
Or enable for selected environments:
if (app.Environment.IsDevelopment() || app.Environment.IsStaging())
{
app.UseSwagger();
app.UseSwaggerUI();
}
👉 In Production, protect Swagger instead of disabling it.
4. Wrong Middleware Order
Problem
Swagger does not load because middleware runs in the wrong order.
Correct Order
app.UseRouting();
app.UseSwagger();
app.UseSwaggerUI();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
Swagger should load before authentication and authorization.
5. Swagger Blocked by Authentication
Problem
Swagger shows 401 Unauthorized or 403 Forbidden.
Cause
Global authorization rules block /swagger.
Solution
Allow Swagger access or exclude it from authorization in production.
This is a very common mistake.
6. HTTPS Configuration Issue
Problem
Swagger fails after enabling HTTPS.
Cause
Swagger URL uses HTTP while the app runs on HTTPS.
Solution
Update Swagger endpoint:
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
Always open Swagger using:
https://localhost:xxxx/swagger
7. Wrong Launch URL or Port
Problem
The app runs, but Swagger does not open.
Solution
Check launchSettings.json:
"launchUrl": "swagger"
Also confirm:
- Correct port
- Correct launch profile
8. Swagger Not Showing with Minimal APIs
Problem
Swagger loads but does not show Minimal API endpoints.
Solution
Make sure this line exists:
builder.Services.AddEndpointsApiExplorer();
Without it, Swagger cannot detect Minimal APIs.
9. Swagger Not Showing on IIS or Reverse Proxy
Problem
Swagger works locally but not after deployment.
Common Fixes
- Enable forwarded headers
- Check base path
- Verify routing
app.UseForwardedHeaders();
10. Swagger UI Loads but APIs Are Missing
Problem
Swagger UI opens, but endpoints are empty.
Fix Checklist
- Controllers use
[ApiController] - Controllers have
[Route] - Endpoints are public
- No build errors
How to Quickly Check If Swagger Is Enabled
Before changing any code, do these quick checks:
- Open your browser and go to
/swagger - Check if the page loads or shows a 404 error
- Look at application logs for startup errors
- Confirm the app runs without exceptions
These simple checks often reveal the problem immediately.
Common Mistakes Developers Make with Swagger
Many developers repeat the same mistakes:
- Forgetting to enable Swagger in Production
- Blocking Swagger using global authorization
- Running Swagger after authentication middleware
- Forgetting
AddEndpointsApiExplorer - Using the wrong launch profile
Avoiding these mistakes saves hours of debugging time.
Best Practices for Swagger
- Secure Swagger in Production
- Do not expose private APIs
- Use API versioning
- Add XML comments
- Test Swagger after deployment
Frequently Asked Questions (FAQ)
Why is Swagger not showing in ASP.NET Core?
Swagger usually fails due to missing middleware, environment checks, or authentication blocking access.
What is the default Swagger URL?
/swagger
Does Swagger work in Production?
Yes, but you must enable it manually.
Can authentication block Swagger?
Yes. Authorization rules often block Swagger by mistake.
Why does Swagger show a 404 error?
Swagger middleware is missing or disabled.
Conclusion
Swagger not showing in ASP.NET Core is a common problem, especially for beginners and even experienced developers.
The good news is simple. Swagger usually fails due to configuration issues, not because of bugs in your API. Once you understand how Swagger works in the middleware pipeline, fixing the issue becomes easy.
Always start by checking:
- Swagger services
- Swagger middleware
- Environment settings
- Middleware order
- Authentication rules
By following these steps, you can make Swagger visible again and continue developing your APIs without frustration.
Related Articles
- How to Fix 401 Unauthorized in ASP.NET Core JWT
- Authentication vs Authorization in ASP.NET Core – Complete Guide
- How to Fix CORS Error in ASP.NET Core API

Pingback: Fix “Unable to Resolve Service for Type” in ASP.NET Core - Mika Dev Hub