.NET Core项目通过网站URL访问Swagger遇Fetch错误求助
解决.NET Core项目通过网站URL访问Swagger的报错问题
以下是针对Fetch error Service Unavailable /swagger/v1/swagger.json报错的具体解决步骤:
1. 配置Swagger服务端点
在Program.cs的Swagger生成器配置中,显式添加网站URL作为服务端点,确保Swagger UI能正确定位到swagger.json文件:
builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "你的API名称", Version = "v1" }); // 替换为你的实际网站URL c.AddServer(new OpenApiServer { Url = "https://your-website-domain.com" }); });
同时确保Swagger中间件配置顺序正确:
app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "你的API v1"); });
2. 修正项目绑定地址配置
- 本地开发时,修改
launchSettings.json的applicationUrl,添加你的网站域名或IP:"profiles": { "YourApi": { "commandName": "Project", "applicationUrl": "https://your-website-domain.com:5001;http://your-website-domain.com:5000", "launchUrl": "swagger" } } - 服务器部署时(如IIS),确保站点绑定了正确的域名和端口,且应用池配置正确。
3. 配置CORS跨域规则(按需)
如果是前端从外部域名访问Swagger UI,需添加CORS配置避免跨域限制:
builder.Services.AddCors(options => { options.AddPolicy("SwaggerCors", policy => { // 生产环境建议替换为具体允许的域名 policy.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }); }); // 中间件需放在UseRouting之后,UseSwagger之前 app.UseCors("SwaggerCors");
4. 检查网络与防火墙设置
- 确认服务器防火墙开放了项目使用的端口(如80、443或自定义端口);
- 验证域名已正确解析到服务器IP,通过
ping your-website-domain.com测试连通性; - 直接访问
https://your-website-domain.com/swagger/v1/swagger.json,确认能正常返回JSON内容——如果无法访问,需排查路由、应用部署状态或权限问题。
内容的提问来源于stack exchange,提问作者codetime1
相关产品推荐
相关产品推荐

