DotNet6中WebAPI发布IIS后Swagger报404错误问题
百度已经给出2种方法了,但有些细节没点出
前提:均有加入 开发环境才能正常显示swagger的判断,发布到IIS后是开发环境,默认未打开swagger
两种解决方法:
1、去除或者注释program.cs下的是否开发环境的判断
//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的完整路径,如 :
http://192.20.20.18:6603/swagger/index.html