C# + Blazor Web入门实战:私人笔记(12)程序发布之winserver + iis

上一节我们基本完成了程序功能,本节开始介绍程序发布。

按之前的计划想得比较简单,一节就可以讲完。不过这一切都是基于我的想象,因为我从来都没用过Linux,就更别提搭建web服务器和部署.net应用了。在我实际测试的过程中,着实花费了不少的精力,所以我把程序发布分成两部分,这节只介绍在windows上的发布,下一节再介绍Linux上的发布。

windows上发布的大体步骤

windows web服务端发布具体步骤如下:

1、安装windows server服务器及IIS

2、安装net5

3、发布程序:WASM及WebAPI

4、IIS配置

5、访问测试

如果用到网络数据,还需要有数据库的安装及配置,这里我们用的是sqllite,所以这个步骤就省了。


安装服务器及IIS

windowss系统和IIS安装的具体步骤就不说了,想了解到用户可以到网上搜下相关的教程。

一般而言,如果是购买的ECS服务器,主机商是提供实例的,基本已经配置好了IIS,安装过程就是实例拷贝的过程,即简单又快。

这里需要注意下windows server的版本,我之前想在另一台server 2008的服务器上配置,结果在安装net5时发现已经无法安装了,我也没有找到关于net5对winddows server版本的说明,建议用最新的版本。

我测试服务器用的是小鸟云,windows server版本是2012。打开浏览器,输入http://localhost/,出现如下页面,这步就算是完成了。


安装net5

net5是运行环境,直接到微软官网下载安装,只要下载运行时就好,不需要sdk。现在最新的net6,等这个项目完成后,我这边也会把环境升级到net6,据说效率更高。

方便起见,直接下红框中的那个,安装完成后到命令中,键入dotnet -- info来检查下。

有5.0的标记就是装好了。


发布程序:WASM及WebAPI

解决方案视图,WASM项目,鼠标右键,点发布

新建->选择文件夹,然后下一步

位置默认就好,完成

然后点发布

耐心等待,完成后会有提示。打开文件发布位置

我们看到有个wwwroot的目录和web.config

把它们复制到一个新的文件夹,命名为diary.wasm。

然后我们继续WebAPI,过程都一样,就不说了。稍微有一点不同就是webapi是一堆的文件:

那我们就把上层的publish目录改成diary.webapi,然后把它俩放到一起:


IIS配置

把这两个目录都复制到服务器上去。这里我在服务器的C盘中创建了WebRoot目录,把这两个目录放进去。

打开IIS配置管理器,网站,右键添加网站

按下图红框中的三项进行设置

设置好,确认已启动,端口是8001,当然你也可以指定其他的数字。

然后我们打开服务器上的浏览器,键入 http://localhost:8001,发现是这个错误:

打开web.config文件,里面有用到rewrite,到网上查了下,需要安装一个URL Rewrite的组件,微软官方有提供:

安装以后,再打开,不再报错了,但一直显示的Loading,因为服务器上默认是IE浏览器,而WASM在IE中是无法支持的,所以需要安装一个Chrome来测试下。

换成了Chrome浏览器,再次打开,出现了久违的画面:

只是分类数据是没有内容,那是因为我们的webapi还没有配置。

接下来继续,同样的方法,WebAPI的端口号,因为我们程序中是写死的,所以这里也必须跟程序中保持一致。真正的项目应该是写到配置文件中的。

然后我们键入http://localhost:5187/api?biztype=category&function=get_all

发现是空字符,因为我们还没有上传数据库文件。继续把数据库文件放置到WebRoot根目录中:

然后再次打开,测试成功


访问测试

现在我们回到http://localhost:8001,测试成功!



如此,Windows上的发布就算是做完了。连着教程带配置大概花费了我一个上午的时间,花费时间的地方有两个:

一是Url Rewrite组件,之前不知道要安装这个东西,然后就以为web.config是错误的配置,就把它删了,直接用wwwroot下的文件来部署,结果始终报错。然后就怀疑各种可能原因,纠缠了很长时间才重新把目光聚焦到这里。希望下次再遇到这个问题可以快速定位。

二是webapi中能运行,但api接口一直报错,找不到原因,最后只能一点一点通过输出字符才找到问题,原因是我把数据库文件名Diary.db写成了Dairy.db,导致始终连不上数据库,当然这只是测试项目。实际项目中都会有日志系统,就应该很容易定位问题了。另外,实际项目中也不大会用文件方式来做数据库,所以这个错误有点不值得。

虽然经历以上波折,但总的来说还算简单,浪费了时间也都是自己的问题,以后再部署应该就轻车熟路了。

关于Linux系统的部署,我用到是虚拟机Deepin系统,有兴趣的小伙伴可以事先安装好,我们下节继续。

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

本教程项目源码已作为开源项目加入到Gitee,代码内容会随教程实时更新,大家有兴趣的话可以关注我,以获得最及时的更新。私信:

私人日记 可以获取相关链接;

大家阅读过程中有哪些看不懂或未尽兴的地方,可以在评论区留言,我会先记下来在后续的教程中找机会再说。

教程有帮助的话请大家帮忙关注、转发、扩散,能不能开专栏还需要你们的支持!

举报
评论 0