.NET Core Web API 发布IIS 报错 500.31

6 篇文章 0 订阅

现象及操作:

  • IIS正常发布,应用程序池设置为[无托管代码],报错,500.31,重启IIS还是报错500.31,
    在这里插入图片描述

打开地址报错

  • 根据网上搜索判断为:发布.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 版本,去安装,提示
    在这里插入图片描述
    故先去[程序与功能]卸载旧版本,然后重新从第一个旧版本开始安装,安装了几个后发现,无效果,于是安装最新的版本,还是同样报错503.11,未解决
  • 这里提示到日志文件,于是去系统日志查看,发现IIS有报错日志:
    在这里插入图片描述
    遂去百度,但无果,找到此文件夹查看,但也看不出什么
    %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对应版本,并安装,发布和运行都安装同一版本,重新发布即可

出现400错误通常是由于客户端请求错误或无效的请求引起的。在ASP.NET Core Web API中,可能会出现以下几种情况导致400错误: 1.客户端请求的内容格式不正确,例如请求体中的JSON格式不正确。 2.客户端请求的参数不正确,例如缺少必需的参数或参数类型不正确。 3.客户端请求的文件大小超过了服务器允许的最大值。 为了解决这个问题,你可以尝试以下几个步骤: 1.检查客户端请求的内容格式是否正确,确保请求体中的JSON格式正确。 2.检查客户端请求的参数是否正确,确保所有必需的参数都已经提供,并且参数类型正确。 3.检查客户端请求的文件大小是否超过了服务器允许的最大值。你可以在ASP.NET Core Web API中使用以下代码来设置最大文件大小: ```csharp services.Configure<FormOptions>(options => { options.MultipartBodyLengthLimit = 60000000; //设置最大文件大小为60MB }); ``` 如果以上步骤都没有解决问题,你可以尝试使用ASP.NET Core Web API自带的健康检查功能来检查服务器是否正常运行。你可以在Startup.cs文件中添加以下代码来启用健康检查: ```csharp public void ConfigureServices(IServiceCollection services) { services.AddHealthChecks(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseHealthChecks("/health"); } ``` 然后,你可以在浏览器中访问http://localhost:port/health来检查服务器是否正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值