发布前的准备
-
一般情况下先需要安装这三个
-
保证项目模块里面有这两个
查看配置环境
在cmd执行
dotnen --info
打包项目
-
鼠标右击你要发布的项目选择发布
-
配置发布路径(准备一个空的文件夹),选择发布方法为 文件系统
-
点击设置,如图配置,切记选择发布前删除所有现有文件
-
配置好后点击发布
-
发布成功后文件夹里会有很多打包好的文件
安装IIS管理器
-
在控制面版中找到程序与功能
- 打开启用或关闭Windows功能安装所需要的
-
打上勾后点击确定会自动安装,安装好后打开IIS管理器(在开始里面的windows工具里)
-
打开IIS管理器配置网站
-
填写信息,路径选择刚在打包好的路径
在 网站 上右击选择 添加网站,输入自定义网站名(可以是项目名,比较好找),选择物理路径(项目发布文件的路径),接下来设置端口号,一定要设置且不能重复。80端口默认的不能使用,随便输入一个没有被用过的即可。主机名不要填,否则别人访问不了。点击确定就好了。
- 这样你的项目就IIS上布置好了
常见的错误
- 先配置如何看日志,方便分析错误
1.打包的文件里面有最后面有一个叫web.config的文件,打开文件将
stdoutLogEnabled="false" 改为true 后会生成一个logs文件夹,如果没有手动创建下
日志文件就会在logs文件里。
连接本机数据库
-
打开sqlserver选择登录名,右击选择新建登录名
-
点击搜索,选择高级,点击立即查找,选择SERVICE后点确定
-
选择服务器角色
-
配置IIS应用程序池,选择自己的项目右击选择高级设置,如图改标识
这样数据库就和项目连上了
-
在部署项目中遇到的另一个坑,(delete请求报404)
解决方法:
安装IIS的时候如果选择了WebDAV(Web Distribution Authorization Versioning) Publish,则所有的Web Site默认会应用WebDAV Module和WebDAV Handler.
WebDAV是基于HTTP协议的扩展,添加了很多Method用于管理服务器上的文件
WebDAV Module和WebDAV Handler
WebDAV Handler的默认配置是处理如下 Method:PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK。(可以参考%userprofile%/documents/iisexpress/config/applicationhost.config中的配置)因此PUT和DELETE请求会被Dispatch给WebDAV Handler来处理,但是我们一般不会Enable WebDAV功能。因此Delete和Put请求会被拒绝。
- 解决办法
既然根本原因是WebDAV,最直接的解决办法就是移除WebDAV(一般情况下我们不会用到该功能)。移除有如下几种方法:
直接从系统中移除WebDAV Publish的整个功能(参考上面打开WebDAV Publish的截图)
在Web Site的web.config中移除WebDAVModule和WebDAVHandler
<system.webServer>
<modules>
<remove name=“WebDAVModule”/>
</modules>
<handlers>
<remove name=“WebDAV”/>
</handlers>
</system.webServer>
<meta charset="utf-8">
ASP.Net Core 运行错误 Http Error 502.5 解决办法
Http Error 502.5 - Process Failure
如果你看到上面这张图片了的话,说明你在本地运行的时候报错了。
尤其好多都是我的群友,说下情况。
这个一般是本地的.NET Core SDK版本不统一报错造成的。
原因
当时的项目版本为.NET CORE 2.0,所以现在有很多群友下载然后运行就报错了。
现在是因为下载的SDK是2.1 。所以版本对应不上就GG 了。
理论上来说.NET CORE 2.1X是需要进行向下兼容的。但是不知道为什么这把就没有做好。
原因:项目的SDK版本和运营环境的SDK版本对应不上。
解决方案有两种,一种是升级项目的.NET CORE版本,还有一种就是安装对应的.NET CORE版本。
解决思路
首先你要去找你的IIS报错日志,得到的错误代码 ErrorCode = '0x80004005 : 8000808c.
是这个的话,那就可以通过我说的办法来解决了。
第一种
通过直接修改web.config 的文件。
<aspNetCore processPath="dotnet" arguments=".\LTM.School.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
将 processPath="dotnet"
改成你安装的.NET CORE SDK路径,一般默认在"C:\Program Files\dotnet\dotnet.exe"路径下,替换下就可以解决了。
这种一般是常规加临时解决方案,不稳定。
第二种
下载对应版本的SDK地址:https://www.microsoft.com/net/download/archives
找到对应的大版本,然后里面有具体的版本信息。
但是有个问题,你如果已经装了高版本的SDK,是无法安装低版本的SDK的,所以也不推荐这个办法。
第三种【推荐办法】
升级你项目的SDK.比如https://github.com/52ABP/52ABP.School 的.NET Core版本就是2.0,直接升级到2.1后,发布环境,所有的问题迎刃而解。
.NET Core 还很年轻,大家多给他点时间。相信他会改变不一样的开发环境