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

  

 

posted @ 2023-02-15 16:21  Luckyfish小文  阅读(320)  评论(0编辑  收藏  举报