DotNet6中WebAPI发布IIS后Swagger报404错误问题
百度已经给出2种方法了,但有些细节没点出
前提:均有加入 开发环境才能正常显示swagger的判断,发布到IIS后是开发环境,默认未打开swagger
两种解决方法:
1、去除或者注释program.cs下的是否开发环境的判断
1 2 3 4 5 6 7 8 | //if(app.Environment.IsDevelopment()) //{ //} app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint( "v1/swagger.json" , "测试api" ); }); |
2、 在发布到IIS后的配置文件web.config中,增加环境变量(注意:代码添加位置,是在节点aspNetCore里面),放错地方,会报500错误!
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\TestAPI.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess"> <environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> </environmentVariables> </aspNetCore> </system.webServer> </location> </configuration> <!--ProjectGuid: abbe4c8f-8c95-4213-a9ba-a28618db569b-->
最后,提醒一下:IIS默认不会指向swagger的index文件,所以在浏览器中输入网址时,一定要输入swagger的完整路径,如 :
1 | http: //192.20.20.18:6603/swagger/index.html |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)