前言本文只提供排错思路和步骤具体报错要看各自项目代码。本文vs版本是2019。asp.net core可以使用app.UseDeveloperExceptionPage()无视环境直接开详细异常页定位完记得删1、如下图所示项目使用Debug启动调试项目正常运行2、发布成文件夹部署到IIS后报错5003、发布文件夹部署到本机的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模式下的“优化编码”配置重新勾选上。重新发布成文件夹部署即可。