ASP.NET Core 1.0: Deploy to IIS

来源:互联网 发布:学手语的软件 编辑:程序博客网 时间:2024/06/08 17:42

尽管ASP.NET最新的官方文档记录了如何Deploy to IIS,但是实际操作起来依旧磕磕绊绊。官方文档地址:https://docs.asp.net/en/latest/publishing/iis.html

官方文档其实还详细地介绍了使用Visual Studio来做Deploy,但可惜,一样语焉不详:https://docs.asp.net/en/latest/publishing/iis-with-msdeploy.html


谨将deploy过程遇到的问题以及步骤一一摘录如下,以为备考:

  1. 使用环境:
    服务器版本:Windows 2012 R2
    IIS版本是8.5。
    Visual Studio版本 2015 Update 2
    ASP.NET Core 1.0 R2。
  2. [问题] IIS Management中右键菜单中的Deploy项消失。
    原因是:没有安装Web Deploy。
    解决方案:安装Web Deploy 3.6。
  3. 在IIS Management创建一个Website,确保basic setting把.Net CLR Version选择为No Managed Codes。
    原因:ASP.NET Core 1.0是self host的程序。之所以还需要deploy to IIS,只是复用IIS的进程管理罢了。就是利用IIS的进程管理,然后在IIS和ASP.NET Core 的Host进程之间进行了Proxy的转换,这个过程不需要CLR,所以需要选择No Managed Code。
  4. 有了Web Deploy,可以Config Web Deploy Publishing了。
    原因:这一步主要用来生成.publishsettings文件,用以在Visual Studio中Import。
  5. 然后使用Visual Studio来Publish Project了,选择Import,并选择上一步生成的Publishsetting文件。然后问题来了,始终报错unauthorized的错误,即便user都已经在IIS中安装并设置了。
    原因:不明。
    解决方案:卸载Web Deploy 3.6,安装Web Deploy 3.5。我也不知道为啥,跟随Stacksoverflow的先知们的脚步,成功了。也表问我,如果第二步直接安装Web Deploy 3.5会如何,我也试过,不知道。
  6. 权限过了,Visual Studio自动生成的PS1文件也运行成功,但是网站死活打不开。使用localhost:XXXX(XXXX是binding的端口号),但通过局域网却无法访问。
    原因:没有设置port;
    解决方案:Control Panel > Windows Firewall,添加额外的Inbound rule,指定对应的port。


是为之记。

Alva Chien
2016.5.25
0 0