.NET Framework 4.7.2 ASP.NET项目部署Swagger报500.21错误如何解决
适配.NET Framework 4.7.2的Swagger版本及500.21报错解决方案
适配.NET Framework 4.7.2的Swagger版本
针对.NET Framework 4.7.2的Web API项目,适配的Swagger包为Swashbuckle 5.6.0,这是官方最后一个稳定兼容.NET Framework 4.x系列的版本。你当前提到的运行时版本4.0.30319是.NET Framework本身的运行时版本,不是Swashbuckle包的版本。
操作建议:
- 卸载当前项目中已安装的Swashbuckle.Core相关包
- 重新通过NuGet安装
Swashbuckle 5.6.0版本,安装完成后自动生成的SwaggerConfig.cs默认配置即可支撑基础运行
500.21报错解决方案
该错误本质是IIS未正确关联ASP.NET 4.x运行时,和Swagger版本无关,按以下步骤排查解决:
- 重新注册ASP.NET 4.0到IIS
以管理员身份打开命令提示符,对应系统版本执行命令:
64位系统:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
32位系统:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
如果是Win10/Win Server 2016及以上系统执行上述命令提示不支持,可直接打开「控制面板-程序和功能-启用或关闭Windows功能」,依次展开「Internet Information Services-万维网服务-应用程序开发功能」,勾选ASP.NET 4.7相关选项,安装完成后执行iisreset重启IIS。 - 校验应用程序池配置
打开IIS管理器,找到WordpressService站点对应的应用程序池,确认两项配置:- .NET Framework版本设置为
v4.0.30319 - 托管管道模式设置为集成,不要使用经典模式
- .NET Framework版本设置为
- 补充web.config配置
你现有<handlers>节点配置正确,可在<system.webServer>节点下新增以下配置,避免集成模式校验冲突:<validation validateIntegratedModeConfiguration="false" /> <modules runAllManagedModulesForAllRequests="true" /> - 调整启动注册顺序
打开Global.asax.cs文件,确认Application_Start方法中,Web API路由注册逻辑在Swagger配置注册之前,示例:GlobalConfiguration.Configure(WebApiConfig.Register); SwaggerConfig.Register();
访问验证
所有配置完成后重新编译项目,重启IIS站点,访问http://localhost/WordpressService/swagger/ui/index即可正常打开Swagger界面。
内容的提问来源于stack exchange,提问作者bilpor
相关产品推荐
相关产品推荐

