一、配置教程
ASP.Net Core Web Api在Windows服务器上部署
二、遇到的坑,以下报错全部以访问Swagger页面为例
1、报错:HTTP错误500.19 0x8007000d
- 原因分析:没有安装ASPNETCoreModuleV2,可参考一中的配置教程,或者IIS发布.NET Core项目出现HTTP错误500.19 - Internal Server Error[错误代码:0x8007000d]
2、报错:HTTP错误500.19 由于权限不足而无法读取配置文件。
-
解决方案:对项目文件新增一个具有完全控制权限的Everyone用户。这个很容易搜到,就不指向参考教程。
3、报错:提示500错误无法使用此页面
-
原因分析:缺少 《项目名.XML》文件,参考一中的配置教程:ASP.Net Core Web Api在Windows服务器上部署有提到。
在vs2022中 .net6中默认是不生成《项目名.XML》文件,可以在下图中位置设置:项目>右键>属性>生成>输出>勾选文档文件。
-
再发布文件即可生成,默认在这个路径下:\项目名\bin\Release\net6.0
4、报错:.NET CORE WEB API项目发布到正式环境后,访问Swagger提示404错误无法使用此页面
- 找不到 Web 地址对应的网页: https://10.100.80.92/swagger/index.html
-
报错原理解析:通过查看Program.cs的某一处代码可知:当前环境如果为测试环境,则启动Swagger,否则不启动,且.NETCORE WEB API项目默认就是测试环境,所以一旦发布到正式环境后,就不会运行启动Swagger代码。
项目默认环境 -
解决方案:去掉if (app.Environment.IsDevelopment())这里的代码再发布到线上,这种方法更简单直接
- 以上内容需要理解.NET CORE的配置处理机制,可以参考鄙人这篇文章:ASP.NETcore与配置系统的集成 - 简书 (jianshu.com)。或者深度学习杨中科老师在B站发布的.NET CORE系列教程中的有关配置的内容。
5、访问地址:由默认的localhost:端口号
改成http://localhost:端口号/swagger/index.html