VS项目调试正常,部署到IIS后报错500

前言:本文只提供排错思路和步骤,具体报错要看各自项目代码。本文vs版本是2019。

1、如下图所示,项目使用Debug启动调试,项目正常运行

2、发布成文件夹,部署到IIS后报错500

3、发布文件夹部署到本机的iis后报错。报错HTTP ERROR 500属于站点启动失败,要么是环境问题,要么是代码报错导致站点启动失败。但是本地Debug调试正常,考虑到都是本机的环境,应该不是.net环境问题(注意:如果是本机调试,部署到另一台服务器,则要考虑.net环境问题

4、对比后发现,调试是Debug模式,发布的是Release模式,会不会是这里导致的呢。为了测试,把调试启动方式改为Release模式。发现使用Release调试确实报错了,如下图:

5、此现象有两个问题:

问题1:代码没有任何改变,只是把Debug改为Release模式就报错了。

问题2:错误代码500是有报错了,但是代码没有弹出错误信息。

6、因为Debug调试能正常启动,排除代码本身错误。查看Debug和Release的配置,发现确实有两处不同:

7、关于配置“优化编码”,发现代码会在编译时进行代码裁剪,所以导致Release调试时,实际运行代码与本地代码是不同版本的,所以Release调试有报错也不会在代码弹出。

8、那就在Release模式下,把“优化编码”去掉勾选调试看看。(注意:如果有多个项目,多个项目的“优化编码”都要去掉,如果只去勾选了主项目,报错代码所在项目没去勾选,依旧不会弹出报错

9、Release模式调试也代码报错了

10、参考步骤6的图片配置,发现是swagger依赖的xml文件,在Release模式生成的时候,没有生成对应的xml,所以导致了报错。

11、已经定位到所有问题,回答步骤5的问题:

问题1:代码没有任何改变,只是把Debug改为Release模式就报错了。

答:Release模式下没有勾选生成xml,在swagger配置绑定xml时,缺少xml文件报错。

问题2:错误代码500是有报错了,但是代码没有弹出错误信息。

答:Release模式勾选了“优化编码”,导致调试时程序与本地代码 实际上是两套代码,所以本地代码不会在报错时进入代码并弹出。

12、最后,记得把Release模式下的“优化编码”配置重新勾选上。重新发布成文件夹部署即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值