一、介绍
随着.NetCore开源、以及版本的更新迭代,.NetCore的性能越来越好、功能也越来越丰富,作为纯后端提供Api已经变得越来越频繁,与之配套的接口组件Swagger也成为很多人的选择。下面介绍在IIS上部署Swagger的详细过程。
二、安装IIS服务器
Internet Information Services下的内容最好全部安装,我这里仅没装FTP相关的东西,如果大家需要的话可以自行安装。
三、安装.NetCore项目的IIS支持包
安装了HostingBundle包就不用再单独安装Runtime,安装成功后要重启IIS和重启电脑。
四、设置IIS应用程序池版本
无论是.Net6、.Net8项目我都改成了无托管代码(No Managed Code)。等Swagger首页能正常访问后,我把设置改回了v4.0,发现项目仍然能正常访问。我会再查一下两者的区别,暂时先用无托管代码。
五、设置IIS应用程序池是否启用32位应用程序
发布项目的时候如果是64位发布的,IIS部署的时候需 "启用32位应用程序" 要关闭掉,如果是32位的这里要开启。
六、访问时报错
这里会有两个常见问题,第一个是项目发布后ASPNETCORE_ENVIRONMENT为Production时默认会关闭swagger;第二个是通过IIS发布项目的默认访问的首页是 http://localhost:8001,如果我们的API项目使用了Swagger就会报404错误。
对第一个问题项目发布后往往默认为Production环境,我们将其手动修改为Development即可解决,打开发布到IIS的文件夹下的web.config文件,添加environmentVariables部分代码。对第二个问题应该访问完整的首页url: http://localhost:8001/swagger/api
<aspNetCore processPath="dotnet" arguments=".\WebApiApp1.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development"/>
</environmentVariables>
</aspNetCore>
七、总结
IIS部署.NetCore其实是个挺常见、不复杂的事,但部署项目这个操作不太会经常发生,以至于长时间不用的话有些细节就记不清楚了,所以我在这里做个总结整理,希望能对大家有所帮助。如果大家愿意点赞、收藏、评论,那我更是感激不尽。