IIS Express启用外部请求
如何在IIS Express中启用远程请求? 斯科特格思里写道,这是可能的,但他没有说如何。
现在有一个博客张贴在IIS团队网站上,现在解释如何在IIS Express上启用远程连接 。 这篇文章的相关部分总结如下:
在Vista和Win7上,从管理提示符处运行以下命令:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
对于XP,首先安装Windows XP Service Pack 2支持工具。 然后从管理提示符处运行以下命令:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
有三个你可能需要做的改变。
- 告诉IIS Express自己绑定到所有的IP地址和主机名。 在你的
.config
文件中。 典型:- VS 2015:
$(solutionDir)\.vs\config\applicationhost.config
- <VS 2015:
%userprofile%\My Documents\IISExpress\config\applicationhost.config
- VS 2015:
找到您网站的绑定元素,然后添加
<binding protocol="http" bindingInformation="*:8080:*" />
- 设置称为“http.sys”的Windows位。 以管理员身份运行命令:
netsh http add urlacl url=http://*:8080/ user=everyone
everyone
都是一个windows组。 对于“Tout le monde”等空格使用双引号。
-
通过Windows防火墙允许IIS Express。
启动/ Windows防火墙与高级安全/入站规则/新规则…
程序
%ProgramFiles%\IIS Express\iisexpress.exe
或端口8080 TCP
现在,当您启动iisexpress.exe
您应该会看到类似的消息
成功注册网站“http:// *:8080 /”用于网站“hello world”应用程序“/”
我记得几个月前尝试这个工作流时遇到了同样的问题。
这就是为什么我写了一个简单的代理工具专门用于这种情况: https : //github.com/icflorescu/iisexpress-proxy 。
使用IIS Express代理 ,这一切都变得非常简单 – 不需要“netsh http add urlacl url = vaidesg:8080 / user = everyone”或搞乱你的“applicationhost.config”。
只需在命令提示符下输入:
iisexpress-proxy 8080 to 3000
…然后您可以将您的远程设备指向http:// vaidesg:3000 。
大多数时候更简单是更好。
直到我找到iisexpress代理,没有任何工作。
以管理员身份打开命令提示,然后运行
npm install -g iisexpress-proxy
然后
iisexpress-proxy 51123 to 81
假设您的Visual Studio项目在localhost:51123上打开,并且您想访问外部IP地址xxxx:81
编辑:只要提及它与noip.com很好
一个很好的资源就是在开发时使用SSL。通过Scott Hanselman的IISExpress更容易 。
您所要做的就是通过端口80让IIS Express通过外部进行服务
作为一个旁注:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
这只适用于英文版的Windows。 如果您使用的是本地化版本,则必须使用其他内容替换“所有人”,例如:
- 使用荷兰语版本时的“Iedereen”
- 使用德语版本时的“Jeder”
- 使用匈牙利版本时,“Mindenki”
否则你会得到一个错误(创建SDDL失败,错误:1332)
如果您已经尝试过Colonic Panic的答案,但在Visual Studio中不起作用,请尝试以下操作:
在您的IIS Express配置中追加另一个<binding />
<bindings> <binding protocol="http" bindingInformation="*:8080:localhost" /> <binding protocol="http" bindingInformation="*:8080:hostname" /> </bindings>
最后,您必须以管理员身份运行Visual Studio
这个问题接受的答案是让IIS Express与webmatrix一起工作的指南。 我发现这个指南在尝试使用VS 2010时更有用。
我只是按照步骤3和4(以管理员身份运行IIS Express),并且必须暂时禁用防火墙才能使其工作。
什么帮助我,是右键单击“IISExpress”图标,“显示所有应用程序”。 然后选择网站,我看到了它使用的aplicationhost.config,并更正完美。
如果您正在使用Visual Studio,请按照以下步骤访问IP-Adress上的IIS-Express:
- 在Windows命令行中获取主机IP地址:
ipconfig
- 转到$(SolutionDir).vs \ config \ applicationHost.config
- 找
<site name="WebApplication3" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" /> </application> <bindings> <binding protocol="http" bindingInformation="*:62549:localhost" /> </bindings> </site>
- 添加:
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
与您的IP地址 - 用管理员权限运行你的Visual Studio,一切都应该工作
- 如果您尝试从远程连接,也许会查找一些防火墙问题
我在Visual Studio Professional 2015中安装了“Controor by Keyoti”解决了这个问题。输送机通过一个端口(45455)生成一个REMOTE地址(您的IP),以启用外部请求。 例:
输送机允许您从网络上的外部平板电脑和手机或Android模拟器(无http://10.0.2.2:<hostport>
)测试网络应用程序
步骤如下:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Win 8.1中使用IIS Express和外部请求时遇到一些问题。
我按照这个步骤来调试外部请求:
- 安装IIS
- 配置Visual Studio以使用本地IIS(Web项目中的页面属性)
- 在IIS中创建一个独有的AppPool来处理我的应用程序
- 在我使用Oracle客户端的项目中,必须是32位(64位不能用于Visual Studio),那么我需要在应用程序池中允许32位
- 配置Windows防火墙以允许端口80中的请求(入站规则)
它正在工作!
您可以尝试设置端口转发,而不是尝试修改IIS Express配置,添加新的HTTP.sys规则或以管理员身份运行Visual Studio。
基本上你需要转发你的网站运行的IP:PORT
到你的机器上的其他空闲端口,但在外部网络适配器上,不是本地主机。
问题是IIS Express(至少在Windows 10上)绑定到[::1]:port
这意味着它监听IPv6端口。 你需要考虑到这一点。
这是我做这个工作的方式 – http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
希望它有帮助。
我有一个本地的IIS启用,所以我只是创建一个重写规则到我的调试端口…我认为这是比其他方法更好,更酷,因为它更容易删除一次我开发…这是如何重写看起来。 。
<rewrite> <rules> <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="^dev/(.*)" /> <action type="Rewrite" url="http://localhost:47039/{R:1}" /> </rule> </rules> </rewrite>
VS也允许你直接使用你本地的IIS进行开发(然后允许远程连接),但是你必须总是以管理员身份运行它…我不喜欢这样做。
这是我为Windows 10和Visual Studio 2015所做的,以启用远程访问,使用http和https:
第一步是将您的应用程序绑定到您的内部IP地址。 运行cmd
– > ipconfig
来获取地址。 打开文件/{project folder}/.vs/config/applicationhost.config
并向下滚动,直到找到如下所示:
<site name="Project.Web" id="2"> <application path="/"> <virtualDirectory path="/" physicalPath="C:\Project\Project.Web" /> </application> <bindings> <binding protocol="http" bindingInformation="*:12345:localhost" /> </bindings> </site>
在bindings
下添加两个新的bindings
。 如果您喜欢,也可以使用HTTPS:
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" /> <binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
将以下规则添加到防火墙中,以管理员身份打开一个新的cmd
提示符并运行以下命令:
netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=12345 profile=private remoteip=localsubnet action=allow netsh advfirewall firewall add rule name="IISExpressWebHttps" dir=in protocol=tcp localport=44300 profile=private remoteip=localsubnet action=allow
现在以Administrator
身份启动Visual Studio。 右键单击Web项目项目文件并选择Properties
。 转到Web
选项卡,然后单击Create Virtual Directory
。 如果Visual Studio不以管理员身份运行,则可能会失败。 现在一切都应该工作。
如果您从Admin运行Visual Studio,则可以只添加
<binding protocol="http" bindingInformation="*:8080:*" />
要么
<binding protocol="https" bindingInformation="*:8443:*" />
成
%userprofile%\My Documents\IISExpress\config\applicationhost.config
我无法向我的本地网络中的其他用户提供iis请求,除此之外,我只需重启BT Hub路由器。
这是疯狂的真棒,甚至涵盖漂亮的域名的HTTPS:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
真的很棒的部分,我无法找到其他任何地方,以防上述链接永远消失:
> C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage: > iisexpressadmincmd.exe <command> <parameters> Supported commands: > setupFriendlyHostnameUrl -url:<url> > deleteFriendlyHostnameUrl -url:<url> > setupUrl -url:<url> > deleteUrl -url:<url> > setupSslUrl -url:<url> -CertHash:<value> > setupSslUrl -url:<url> -UseSelfSigned > deleteSslUrl -url:<url> > > Examples: 1) Configure "http.sys" and "hosts" file for friendly > hostname "contoso": iisexpressadmincmd setupFriendlyHostnameUrl > -url:http://contoso:80/ 2) Remove "http.sys" configuration and "hosts" file entry for the friendly hostname "contoso": iisexpressadmincmd > deleteFriendlyHostnameUrl -url:http://contoso:80/
上述实用程序将为您注册SSL证书! 如果您使用-UseSelfSigned选项,那就太容易了。
如果你想以困难的方式做事情,非显而易见的部分是你需要告诉HTTP.SYS使用什么证书,如下所示:
netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE
Certhash是您可以从MMC的证书属性中获得的“指纹”。
我做了以下,并能够连接:
1)将IIS express配置从本地主机绑定到“*”
绑定协议=“http”bindingInformation =“*:8888:*”
2)在防火墙上定义入站规则,以允许协议类型为tcp的特定端口
3)添加以下命令为您的端口添加网络配置:netsh http add urlacl url = http:// *:8888 / user = everyone
我通过使用反向代理方法解决了这个问题。
我安装了wamp服务器,并使用了apache web服务器的简单反向代理功能。
我添加了一个新的端口来听Apache Web服务器(8081)。 然后,我将该代理配置添加为该端口的虚拟主机。
<VirtualHost *:8081> ProxyPass / http://localhost:46935/ ProxyPassReverse / http://localhost:46935/ </VirtualHost>