【错误解决+记录】.net core IIS 部署问题

前言

之前在linux部署了core程序,安装sdk,放个nginx就可以。但是在win上就恶心很多。这里放一些过程和遇到的问题。不能保证百分百解决,希望可以给你一些提示。

过程

1. 安装iis(自行百度)

2. 安装core相关包

链接:https://dotnet.microsoft.com/download/dotnet-core/2.1
这里看你开发版本是几,3.1改下后面的数字
在这里插入图片描述
一般这两个装上不会有太大问题。看清楚自己的版本号。
然后还要下载 Hosting Bundle,原因是因为IIS绑定的是80,貌似是做映射。
一般安装完这三个基本就不会有问题。

3. 打包项目

linux打包和win打包方式略有不同。linux直接打包到文件夹就可以,win需要做一些操作
发布目标选择IIS
在这里插入图片描述
方法选择文件系统,目标位置就是文件夹的位置。(其他发布方式自行研究)
在这里插入图片描述
如果是第一次发布错了,选择了一般的文件系统。可以点击这里修改回来。在这里插入图片描述

4. 完结撒花

将打包好的项目,放在服务器相关目录下。然后添加网站。添加好之后,将打开应用程序池,将该网站的托管管道模式改为无托管代码。这是因为IIS只是起到反向代理的功能。在这里插入图片描述
到这里点击浏览,应该就能看到网站了。如果不出意外。

问题

1. 提示web.config问题。

解决思路,检查web.config中有没有无法识别的节点,或其他错写内容。如果没有问题,则可能是服务器环境与开发环境不一致。大概率是环境问题。检查开发环境和服务器环境sdk是否一致,安装过程2的相关包

2. 502问题

当你看到HTTP Error 502.5 - Process Failure出现的时候,首先看自己的服务器是不是win 2012和2012 R。这个问题我在百度的时候有反应缺少补丁。我这里的服务器版本是2016,所以我当时猜想我不是这个问题。服务器为2012版本的小伙伴可以参考 https://blog.csdn.net/weixin_30458043/article/details/97139820 这篇博文。至于他们怎么实验出来自己缺少补丁的,在下不知。
在服务器版本没有问题的时候。cmd 切到项目目录。用dotnet运行网站测试
在这里插入图片描述
这种事正常情况。
如有异常根据错误提示排查。可以参考 https://blog.csdn.net/CuiLanren/article/details/80777488这篇博文遇到的情况。
==如果出现启动正常,还是502的情况!!!==检查web.config。
将此节点的值换成dotnet的安装目录,如果你是默认安装的话目录一般是
C:\Program Files (x86)\dotnet\dotnet.exe
不是默认安装的话自行查找。

3.代码出错问题

这种情况比较罕见,建议在第一版部署时将web.config中的stdoutLogEnabled设置为true。这是开启错误日志系统,访问错误代码会产生日志并保存到stdoutLogFile中的路径中。这里的路径需要你自己创建文件夹。像在这里插入图片描述
这种就需要在根目录下创建logs文件,代码出错后就会保存在日志中,根据日志来修改就可以了。

总结

一般来说问题大都是环境问题。所以一定看好自己的开发环境和部署环境的版本号。