.NET Core Web API 发布IIS 报错 500.31

现象及操作:

  • IIS正常发布,应用程序池设置为[无托管代码],报错,500.31,重启IIS还是报错500.31,
    .NET Core Web API 发布IIS 报错 500.31_第1张图片

.NET Core Web API 发布IIS 报错 500.31_第2张图片

  • 根据网上搜索判断为:发布.NET Core版本与本机运行.NET Core版本不统一导致,
  • 但,本机已安装VS2019并在本机开发,可以正常调试打开,发布后,却报错,常理来说应该是包含了环境,
  • 查看发布文件,[*.runtimeconfig.json],中写的:[“version”: “3.1.0”],于是去本机[程序和功能],查看已安装列表,但已有此版本,
  • 输入cmd命令:
    dotnet --version
    3.1.301
  • 输入cmd命令:
    dotnet --info
    列表包含了很多个.NET 版本,包括了.NET Core3.1
  • 去微软官网下载旧版.NET Core版本打算安装,之前发布2.2版本遇到过类似问题,解决办法是安装旧版本和新版本的.NET Core
    https://dotnet.microsoft.com/download/dotnet/3.1
    https://dotnet.microsoft.com/download/visual-studio-sdks
    下载了多个.NET Core 3.1的Runtime Hosting 版本,去安装,提示
    .NET Core Web API 发布IIS 报错 500.31_第3张图片
    故先去[程序与功能]卸载旧版本,然后重新从第一个旧版本开始安装,安装了几个后发现,无效果,于是安装最新的版本,还是同样报错503.11,未解决
  • 这里提示到日志文件,于是去系统日志查看,发现IIS有报错日志:
    .NET Core Web API 发布IIS 报错 500.31_第4张图片
    遂去百度,但无果,找到此文件夹查看,但也看不出什么
    %PROGRAMFILES%\IIS\Asp.Net Core Module\V2
  • 其中有一篇文章说,删除 web.config中的[hostingModel=“inprocess”]字段,说此字段是托管设置,但程序是无托管,需要手动删除,遂测试,无改善,但报其他错误,故又恢复原样改回来.继续报错500.31
  • 继续百度,中途安装最新.NET Core SDK3.1的版本,也无果,正常来讲,只有开发需要安装SDK,运行只需要Host捆绑包就可以.
  • 多种方法测试后都无果,最后再这一系列操作后,想着之前发布过.NET Core 2.2版本的,应该可以直接使用不报错,故改项目的版本3.1=>2.2,但报错,原因是我创建项目是3.1,有很多属性对象等都是3.1自带的,2.2则需要安装其他的包,故又改回来.NET Core 3.1,重新发布,这时候我重启IIS,然后就正常了!可以正常访问我发布的Web程序了;

(以上中途过程不分先后,有的顺序可能是不准确的,相关的操作应该都记录了)

总结:

原因:.NET Core 版本不对应
解决办法:下载.NET Core对应版本,并安装,发布和运行都安装同一版本,重新发布即可

你可能感兴趣的:(Web,C#)