IISExpress 运行的站点开放局域网访问

IISExpress 运行的站点开放局域网访问

问题起因

笔者希望在 Windows 10 下使用 IISExpress 的轻量服务器部署一个局域网内运行的临时站点(运行机器的局域网地址为 192.168.0.180,监听端口 8888),直接按照 IISExpress 的启动方法启动网站后,发现只能在本机通过 127.0.0.1:8888 或者 localhost:8888 的 URL 访问,直接在局域网内其他设备访问 192.168.0.180:8888 均连接失败。经查是 Windows 自带的防火墙阻断了访问,因此要把希望其他机器访问的本机端口加入防火墙放行端口中。

解决方案

第一步:配置网站开放端口

设置 IISExpress 配置文件 applicationhost.config(通常位于 C:\Users\你的用户名\Documents\IISExpress\config 目录下)。
找到要设置的网站的 <sites> 标签,将要开放非本机访问的站点的 <bindings> 标签下增加下列属性:

<binding protocol="http" bindingInformation="*:8888:*" />

例如:

 <site name="DirectoryView" id="3" serverAutoStart="true">
     <application path="/">
         <virtualDirectory path="/" physicalPath="G:\folder" />
     </application>
     <bindings>
         <binding protocol="http" bindingInformation=":8888:localhost" />
         <binding protocol="http" bindingInformation=":8888:127.0.0.1" />
         <binding protocol="http" bindingInformation="*:8888:*" />
     </bindings>
</site>

第二步:添加 URL 保留

管理员身份打开命令提示符或者 Powershell 并执行以下命令:

netsh http add urlacl url=http://*:8888/ user="NT AUTHORITY\INTERACTIVE"

完成后可以通过命令

netsh http show urlacl

查看本机现有的所有保留 URL,当在诸多记录中看到这条时,说明 http://*:8888/ 这个 URL 已经被保留好了:

保留的 URL              : http://*:8888/
    用户: NT AUTHORITY\INTERACTIVE
        侦听: Yes
        委派: No
        SDDL: D:(A;;GX;;;IU)

如果以后不需要保留这个 URL 了,就执行相反命令删除掉即可:

netsh http delete urlacl url=http://*:8888/

第三步:打开防火墙限制

管理员身份打开命令提示符或者 Powershell 并执行以下命令:

netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=8888 profile=private remoteip=localsubnet action=allow

配置完成后,防火墙就会放行 8888 端口上的 TCP 协议数据交换请求。通过命令

netsh advfirewall firewall show rule name="IISExpressWeb"

查看规则名为 IISExpressWeb 的规则是否成功添加:

PS C:\Windows\system32> netsh advfirewall firewall show rule name="IISExpressWeb"

规则名称:                             IISExpressWeb
----------------------------------------------------------------------
已启用:                               是
方向:                                 入
配置文件:                             专用
分组:
本地 IP:                              任何
远程 IP:                              LocalSubnet
协议:                                 TCP
本地端口:                            8888
远程端口:                           任何
边缘遍历:                             否
操作:                                 允许
确定。

同样地,如果以后不需要,就把这条规则删除掉就好:

netsh advfirewall firewall delete rule name="IISExpressWeb"

完成

使用命令行

"C:\Program Files\IIS Express\iisexpress.exe" /siteid:3

运行网站(笔者这里是 id3 号的站点),从其他设备访问 http://192.168.0.180:8888/,可以正常看到运行的网站了。

总结

IISExpress 作为微软开发的 IIS 的轻量版,具有 IIS 的大多数功能,只要把网站路径设置正确,可以作为临时服务器运行静态网站或者基于 ASP.NET 的应用。当然,目录浏览、虚拟目录、重定向等等常见网站配置功能都可以通过写配置文件通过相应的键值设置。只是配置的时候需要自己通过配置文件 applicationhost.config 来设置网站参数而已,不如 IIS 的图形界面直观,但是对于程序猿来说,有没有图形又有什么关系呢(逃)。

个人网站
2019.7.12

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值