我以前习惯使用Mac,而ngrok是轻而易举的;您需要做的就是指定一个端口,但我是IISExpress的新手,我无法弄清楚如何正确使用ngrok和/或IIS。为了清楚起见,我从同事那里继承了一台Windows机器(已离开公司),并且该设置在本地运行良好。
本地网址类似于:
thing.somedomain.com
在IIS的绑定部分,我得到了:
Type Host Name Port IP Address
http thing.somedomain.com 80 *
我已将此页面用作参考:https://www.twilio.com/blog/2014/03/configure-windows-for-local-webhook-testing-using-ngrok.html
说明似乎合理,但它们对我不起作用。这些说明表明需要为IIS更改文件applicationhost.config。我找到了这个文件,找到了我需要ngrok的网站的正确部分。绑定信息与IIS gui中的内容不匹配:
<binding protocol="http" bindingInformation="*:4085:localhost" />
根据说明,我已添加:
<binding protocol="http" bindingInformation="*:4085:whatever.ngrok.io" />
(这里每当我在Windows上运行ngrok时,我会得到ngrok.io而不是ngrok.com,这看起来很奇怪。我已经尝试过两种方式都没有运气。)
我已在IIS上重新启动了该站点(在操作菜单中)。当我尝试从远程计算机访问ngrok URL时,ngrok返回502坏网关,远程计算机显示:
Failed to complete tunnel connection
The connection to http://whatever.ngrok.io was successfully tunneled to your ngrok client, but the client failed to establish a connection to the local address localhost:4085.
Make sure that a web service is running on localhost:4085 and that it is a valid address.
The error encountered was: dial tcp 127.0.0.1:4085: ConnectEx tcp: No connection could be made because the target machine actively refused it.
当我尝试在本地访问localhost:4085时,我得到&#34;此网页不可用&#34;。当我尝试转到localhost:80时,我会重定向到IIS正在服务的其他站点。当我尝试127.0.0.1:80时,我收到404错误。
我尝试过使用netstat -a -b,并尝试了与127.0.0.1相关的所有端口,但没有任何内容显示正确的网站(但仍然是.somedomain.com仍能正常工作)。
我完全神秘化了,并且不知道下一步该尝试什么,或者问题出在哪里(我是如何开始ngrok,我是如何访问ngrok的,如何映射绑定,IIS重启,防火墙问题或其他一些巫术。这应该很简单!
答案 0 :(得分:10)
所以事实证明ApplicationHost.config文件中没有任何变化,而且我正在查看错误的ApplicationHost.config文件(真正的文件通常在C:/ Windows / System32 / inetsrv /中被隐藏起来配置,但您可以从具有提升权限的命令提示符(以管理员身份运行)在记事本中打开它。实际的绑定信息是:
<binding protocol="http" bindingInformation="*:80:thing.somedomain.com" />
与IIS显示的内容相匹配。那就是说,我需要改变的是我如何调用ngrok:
ngrok http -host-header=thing.somedomain.com:80
就是这样。我还允许外部流量到主机名:
netsh http add urlacl url=http://thing.somedomain.com/ user=everyone
答案 1 :(得分:0)
有一种方法可以让它更容易。假设您的 IISExpress 网站是 http://localhost:63254
就这样开始ngrok
:
ngrok http -host-header=rewrite localhost:63254