目前,.net core也出了几年了,由于技术算是比较新,网上相关的资料还较少,本人查阅了许多资料,完整的流程也仅限于.net core的基础网站发布,现如今较为流行的方式是WebAPI方法,使用WebAPI与数据库进行通信,实际的网站通过访问WebAPI获取数据,这种方式的网站配置会多一些步骤,而网上并没有相关的完整流程介绍,因此在这里写下使用WebAPI方法的网站如何配置在IIS上。(若没有WebAPI,仅是一个.net core网站,当前教程中WebAPI相关的步骤可忽略不看)
当前探索出的方法由于不知道如何将迁移应用在服务器的数据库上,因此只能以服务器安装VS为解决方案,应该有其他方法,后续若探索有结果会另发布文章介绍
该教程以Windows Server 2012为例,实际配置环境windows是通用的,只要有IIS即可
1. 发布网站,WebAPI与实际网站各在VS2017(实际版本可变)中对应一个sln工程,每个工程都有实际的网站项目,右击项目点击发布按钮,设置发布目录,将网站发布至指定目录下,发布时如有Sql Server数据库并使用了EF Core迁移的话勾选对应选项。(该步骤实际过程可参考网络,网上教程较多,这里不再赘述)
2. 在服务器端启动IIS功能,这一步同样网上有很多教程,也不再赘述
3. 在编写WebAPI时有指定对应的端口号,在IIS中添加网站时端口号配置好,实际网站的项目添加网站时就配置默认的80端口
4. 本地安装Sql Server数据库(安装Sql Server Express),安装SSMS(Sql Server Management Studio),使用SSMS在数据库中新建对应的数据库
5. 打开VS工程,使用Update-Database(与开发时功能相同,这一部分若开发时不会使用可参考微软官方文档https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor-pages/model?view=aspnetcore-2.2&tabs=visual-studio#initial-migration),将迁移应用在数据库中,完成后数据库中对应有相关的表与字段
6. SSMS中打开网站发布目录下EFScript文件夹中的数据库脚本并执行,将数据添加进数据库中
7. SSMS中设置用户权限:在Sercurity/Logins/NT AUTOHORITY\SYSTEM上点击右键,选择属性,在Server Roles选项中勾选sysadmin选项
8. IIS中网站对应的应用程序池设置在高级设置下找到Process Model列表,其中的Identity选项从ApplicationPoolIdentity改为LocalSystem
上述配置完成后即可通过IP地址访问网站了
注意:
数据库由于是服务器安全方面较为敏感的部分,最好设置用户名和密码并在连接字符串中加上用户名密码访问,如果测试用,不想太过麻烦,则使用上述的步骤,修改为本地系统访问,若不这样设置,服务器可以打开网站,但外网会打不开,这是因为外网是通过应用程序池的名称访问,而数据库中没有对应的用户,所以需要修改为本地系统,并在数据库中打开该权限。
另外由于WebAPI仅向外部提供API接口,内部与数据库通信,大部分情况下可能没有网页样式,因此在编写代码时wwwroot文件夹可能是空的,那么发布时则不会生成该文件夹,有些情况下程序中会获取该文件夹内容,如果网站无法访问,可能是这里的问题,先确认发布目录下是否有该文件夹,没有则新建一个空的wwwroot文件夹即可,若还无法访问,再尝试其他方法。
如果无法访问网页,可从服务器端调试得到异常信息,实际可根据异常信息找到出错位置,下一篇文章介绍如何在服务器端调试已编译为dll的.net core网站