一、运行环境
服务器的系统是64位Windows Server 2012,
ASP.net
Core程序是一个MVC的小应用,选择的是独立发布,目标系统是Win81 x64。
二、错误原因
把发布的一堆东西拷到服务器之后打开IIS管理,确认已经安装了aspnetcore moudle,添加网站。
由于是ASP.net
Core,所以不需要托管代码,在应用程序池里面把托管程序选择为无托管代码。然后点击浏览,喜闻乐见地看到502.5错误页面。
三、解决方法
先求助万能的百度,参考了一下热心网友的文章,说只要改成独立发布就能解决,然而对我的问题并没有用。
看一波错误页面,大概知道是
ASP.net
core里面的那个exe程序跑不起来。根据提示的错误检索步骤,查看一波系统日志,系统日志的查看一般在服务器管理工具里面一打开就能看到,或者右键 我的电脑->管理->事件查看器 那里查看,看到下图的两个错误。
这时大概猜到是代码里面用了Kestrel,然后Kestrel启动失败导致的。把IIS上的网站停用,然后直接打开发布的那个xxx.exe运行,尝试访问,发现可以访问。确定了代码没问题,那么可能是IIS的反向代理和代码里的Kestrel服务器有冲突,在网页的应用线程池里的高级设置把加载用户配置设置为True。我的问题得以解决。
参考文章
https://www.cnblogs.com/hoyu/archive/2018/03/06/8514243.html