最新版本号[免费下载]

使用IIS在Windows上托管ASP.NET Core中文手册(Window服务器版)

作者:本站编辑 发布时间:2018-12-20 来源:佚名 点击数:

博文背景: 

最近想用.Net Core进行做毕业设计,于是在73ic去上云买了一台云服务器,,博主觉得逐浪云最好的在于服务器可以随时更换镜像(0成本快速更换window->Linux),而且服务器网速超级快,基本滿足日常的使用。

--------------------- 



配置前提

Window服务器

Windows Server 2008 R2及以上版本

注意事项: 服务器千万不要选择window server 2008 SP2 !

Windows server 2008 是基于Windows vista 的服务器系统,有32位和64位两个版本. 

Windows server 2008 R2是基于Windows 7的服务器操作系统只有64位版. 

Windows Server 2008 SP2表示是在Windows server 2008基础上添加了SP2的补丁,全称是:Windows Server 2008 Service Pack (SP) 2。


步骤一 : 首先配置IIS

1 . 低版本window server(如2008R2) 

打开控制面板 -> 程序 -> 程序和功能 -> 打开或关闭Windows功能 -> 角色 -> 添加角色 -> 选择web服务器 -> 按需勾选需要的服务 

1.png


2 . 高版本window server(如2016版本) 

按window -> 服务器管理器 ->添加角色 ->选择web服务器 -> 按需勾选需要的服务 

然后点击下一步进行安装即可。 

然后进入 控制面板 > 管理工具 > Internet 信息服务(IIS)管理器 

便可看到IIS管理器,为了方便以后使用,win10的话可以固定到开始桌面,其余window操作系统可以选择发送到桌面快捷方式。



步骤二: 安装.NET Core Windows Server Hosting软件包

1 . 在安裝.NET Core Windows Server Hosting软件包之前获取并安装Microsoft Visual C ++ 2015 Redistributable 

2 . 在服务器上安装.NET Core Windows Server Hosting软件包。该软件包安装了.NET Core Runtime,.NET Core Library和ASP.NET Core Module。该模块在IIS和Kestrel服务器之间创建反向代理(点击可查看Kestrel原理)。 

3 . 重新启动系统或cmd 执行net stop was / y,然后从命令提示符处启动net start w3svc,以更改系统环境变量的Path,操作完以后我们打开IIS管理工具,可以在处理程序映射看到aspNetCore。 

4 . 安装.NET Core 2.0 SDK


注意事项:

1 : 如果安装.NET Core Windows Server Hosting不成功的话查看服务器版本是否是window server2008R2以上 

2 : 安装完一定要重新启动系统或cmd执行net stop was / y,然后从命令提示符处启动net start w3svc 

3 : 环境变量存在dotnet(如下图)才可以在web.config中这样使用

<aspNetCore processPath="dotnet" arguments=".\core.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />


2.png


 

3.png

4.png



步骤三: 部署.NetCore程序

1 . 在IIS管理器中,创建一个新的网站,写上站点名称,并将物理路径设置为部署的应用程序文件夹(或者直接将DefaultAppPool改为无托管代码,将程序部署在此) 

2 . 将应用程序池设置为无托管代码。 

5.png



步骤四: 部署完可能遇到的问题

这里仅记录博主折腾半天才解决的问题:

6.png



1 . 出现任何无法运行的问题都应该去查看事件查看器 

低版本server(如2008R2): 

控制面板 > 管理工具 ->事件查看器 

高版本(如2016): 直接按window ->事件查看器



2 . 查看发现报这个错误 

Application ‘MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE/CORE’ with physical root ‘C:\core\’ failed to start process with commandline ‘.\dotnet.exe .\core.dll’, ErrorCode = ‘0x80070002 : 0.(如下图)


出现问题思考:

1.1 一开始以为是系统变量没有dotnet.exe,查看发现有。 

1.2 折腾了半天Github和Google,看了官方文档博主都已进行尝试依旧无效(文章下面有Micorsoft官方文档)。 

1.3 怀疑或许是本地的.net core版本及服务器配置的版本不同导致,尝试改变配置文件,无奈失败。 

1.4 CMD管理员进入自己部署上去的应用程序目录,直接执行报错的内容的程序,尝试希望报个没权限的错误什么的,惊喜的是出现了想要的结果(如下图)。 

1.5 发现果然是版本的问题呀啊啊啊,开心又生气,更改版本重新部署了一遍,果然成功了,开心的写下这篇博文。

a.png


b.png


最后引言

过程确实令人苦恼又期待,结果却总是让人觉得这一切探索的过程都是值的的,如果读者在部署过程中遇到了任何问题或者发现文章有错误,可以在评论区留言,期待更多的交流。


附上Microsoft官方查阅文档: 

[1]https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x#supported-operating-systems    

[2]https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/aspnet-core-module?tabs=aspnetcore2x   

[3]https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x 



本文责任编辑: 加入会员收藏夹 点此参与评论>>
复制本网址-发给QQ/微信上的朋友
AI智能听书
选取音色