近期由于工作原因,需要发布.net core框架下的webapi到IIS上。遭遇了一番蹂躏,特此记下,以备后面使用。
首先工作中有2个服务。一个是identityserver4的服务,负责token的发放,一个是我们的业务webApi。
当客户需要调用我们的webapi时,要先到identityserver4上去申请一个token。然后使用这个token来访问我们的webapi。
授权服务器identityserver4,是开源的。在git上可以直接获得。是基于.net core 开发的。我用的是基于.net core 1.0的。
下面它的部署就登场了。建议使用微软提供的文档。文档地址
https://docs.microsoft.com/en-us/aspnet/core/publishing/iis
文档最后面有常见问题Common errors 和解决方式 Troubleshooting。
由于服务器是server2012 ,所用的iis版本为8.5.支持 本身支持 .net 4.5
1.安装iis webserver
2 安装 .net core windows server hosting bundle
注意安装完毕之后,重启服务器,或者执行 net stop was /y followed by net start w3svc from a command prompt to pick up a change to the system PATH
否则,会报
-
502.3 Bad Gateway - There was a connection error while trying to route the request
虽然在文档中的troubleshooting里提到,但是根据那个解决不了问题。还是得靠重启。 或者那个命令。
3 安装.net core 运行时库,我安装的.net core sdk
在cmd里面运行 dotnet可以验证安装是否正确。
4 将vs里发布的包,放入iis里,很普通的网站发布一样。
但是应用程序池 里 .net 框架 要选择 无托管代码。
第二个 webapi的发布和一般的mvc的web发布一样。
5 如果报 500 内部错误或者webapi没有正确 记录日志,请查看日志的配置,以及iisuser对文件夹的权限。
这和其他网站发布没有区别。