如何在IIS Express中启用远程请求?斯科特·格思里(Scott Guthrie)写道,这是可能的,但他没有透露具体方法。
如何在IIS Express中启用远程请求?斯科特·格思里(Scott Guthrie)写道,这是可能的,但他没有透露具体方法。
Answers:
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)
netsh
命令允许任何主机名上的连接?
user={PARAM_USER}
将使用您自己的语言。
user=todos
代替user=everyone
。
您可能需要进行三项更改。
.config
文件中。通常:
$(solutionDir)\.vs\config\applicationhost.config
%userprofile%\My Documents\IISExpress\config\applicationhost.config
找到您网站的绑定元素,然后添加
<binding protocol="http" bindingInformation="*:8080:*" />
netsh http add urlacl url=http://*:8080/ user=everyone
everyone
Windows组在哪里。对带有空格的组使用双引号,例如“ Tout le monde”。
允许IIS Express通过Windows防火墙。
开始/具有高级安全性的Windows防火墙/入站规则/新规则...
程序
%ProgramFiles%\IIS Express\iisexpress.exe
或端口8080 TCP
现在,当您开始时iisexpress.exe
,应该会看到一条消息,例如
已成功为网站“ hello world”应用程序“ /”注册URL“ http:// *:8080 /”
users=everyone
为netsh
(第二步)可能会导致错误1789年解决方案是把everyone
以自己的语言对应的组名。
Project Url
,如果我输入星号作为主机名,则会出现错误。如果输入其他任何内容,它将尝试创建新的虚拟目录。它不会链接到application.config中的条目。
bindingInformation="*:8080:hostname"
和步骤2中使用计算机的主机名url=http://hostname:8080/
,并且在“ Web”选项卡上的Visual Studio Web项目属性中,将“项目URL”设置为http://hostname:8080/
。*
如果您已经创建了urlacl,请删除它;如果两者兼而有之,那将是行不通的。最后,您在Web浏览器中访问的URL必须引用主机名,而不是localhost。
<binding protocol="http" bindingInformation="*:8080:localhost" />
我记得几个月前尝试此工作流程时遇到了同样的问题。
这就是为什么我专门针对这种情况编写了一个简单的代理实用程序的原因: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-proxy之前,对我没有任何帮助。
以管理员身份打开命令提示符,然后运行
npm install -g iisexpress-proxy
然后
iisexpress-proxy 51123 to 81
假设您的Visual Studio项目在localhost:51123上打开,并且您想在外部IP地址xxxx:81上访问
编辑:我目前正在使用 ngrok
一个很好的资源是使用IISExpress在开发时使用SSL更容易由Scott Hanselman的。
您要做的是让IIS Express通过端口80外部提供服务的部分
如果您使用的是Visual Studio,请按照以下步骤操作,以通过IP地址访问IIS-Express:
ipconfig
在Windows命令行中获取主机IP地址:去
$(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 Professional 2015中安装“通过Keyoti传送器”解决了该问题。传送器通过启用外部请求的端口(45455)生成了一个远程地址(您的IP)。例:
通过Conveyor,您可以从网络上的外部平板电脑和手机或Android模拟器(不带http://10.0.2.2:<hostport>
)测试Web应用程序
这些步骤在以下链接中:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
如果您尝试过Panic上校的回答但在Visual Studio中不起作用,请尝试以下操作:
<binding />
在IIS Express配置中附加另一个
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
最后,您必须以管理员身份运行Visual Studio。
这是我对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
。如果愿意,也可以使用HTTPS:
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
将以下规则添加到防火墙,cmd
以admin身份打开一个新提示,然后运行以下命令:
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
现在以启动Visual Studio Administrator
。右键单击Web项目项目文件,然后选择Properties
。转到Web
选项卡,然后单击确定Create Virtual Directory
。如果Visual Studio不是以管理员身份运行,则可能会失败。现在一切正常。
该问题的公认答案是使IIS Express与webmatrix一起使用的指南。当尝试使其与VS 2010配合使用时,我发现本指南更有用。
我只是按照步骤3和4(以管理员身份运行IIS Express),不得不暂时禁用我的防火墙才能使其正常工作。
您可以尝试设置端口转发,而不是尝试修改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
希望能帮助到你。
我发现最简单,最酷的方法是使用(设置需要2分钟):
它可以与在localhost上运行的任何东西一起工作。只需注册,运行一点可执行文件,无论您在localhost上运行什么,都可以从任何地方访问公共URL。
这非常适合向远程队友显示内容,而无需摆弄IIS安装程序或防火墙。要停止访问只是终止可执行文件。
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
假设89230是您的IIS Express端口
您还可以免费运行多个端口
如果您从Admin运行Visual Studio,则可以仅添加
<binding protocol="http" bindingInformation="*:8080:*" />
要么
<binding protocol="https" bindingInformation="*:8443:*" />
进入
%userprofile%\My Documents\IISExpress\config\applicationhost.config
$(SolutionDir).vs\config\applicationHost.config
并且还不得不在Windows防火墙中打开应用程序的端口(8443)。
我启用了本地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进行开发(然后允许进行远程连接),但是您必须始终以管理员身份运行它……我不喜欢这样。
我通过使用反向代理方法解决了这个问题。
我安装了wamp服务器,并使用了Apache Web服务器的简单反向代理功能。
我添加了一个新端口以监听Apache Web服务器(8081)。然后,我将代理配置添加为该端口的虚拟主机。
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
这真是太棒了,甚至涵盖了具有漂亮域名的HTTPS:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
万一上述链接消失了,我在SO上其他任何地方都找不到的真棒部分:
> 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
[项目属性对话框]
对于使用VisualStudio 2017和NetCore API项目进行的开发:
1)在Cmd-Box中:ipconfig / all确定IP地址
2a)在项目属性->调试选项卡中输入检索到的IP地址
2b)选择一个端口,并将其附加到步骤2a中的IP地址。
3)在防火墙中添加一个允许规则,以允许选定端口上的传入TCP流量(我的防火墙通过对话框触发:“阻止或将规则添加到防火墙”)。在这种情况下,Add将起到作用。
上述解决方案的缺点:
1)如果使用动态IP地址,则在分配了另一个IP地址的情况下,您需要重做上述步骤。
2)您的服务器现在有一个开放的端口,您可能会忘记它,但是此开放的端口仍然是不需要的访客的邀请。