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)

有三个你可能需要做的改变。

  1. 告诉IIS Express自己绑定到所有的IP地址和主机名。 在你的.config文件中。 典型:
    • VS 2015: $(solutionDir)\.vs\config\applicationhost.config
    • <VS 2015: %userprofile%\My Documents\IISExpress\config\applicationhost.config

找到您网站的绑定元素,然后添加

  <binding protocol="http" bindingInformation="*:8080:*" /> 
  1. 设置称为“http.sys”的Windows位。 以管理员身份运行命令:
  netsh http add urlacl url=http://*:8080/ user=everyone 

everyone都是一个windows组。 对于“Tout le monde”等空格使用双引号。

  1. 通过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,并更正完美。

IISExpress配置

如果您正在使用Visual Studio,请按照以下步骤访问IP-Adress上的IIS-Express:

  1. 在Windows命令行中获取主机IP地址: ipconfig
  2. 转到$(SolutionDir).vs \ config \ applicationHost.config

  3. <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>
  4. 添加: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    与您的IP地址
  5. 用管理员权限运行你的Visual Studio,一切都应该工作
  6. 如果您尝试从远程连接,也许会查找一些防火墙问题

我在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和外部请求时遇到一些问题。

我按照这个步骤来调试外部请求:

  1. 安装IIS
  2. 配置Visual Studio以使用本地IIS(Web项目中的页面属性)
  3. 在IIS中创建一个独有的AppPool来处理我的应用程序
  4. 在我使用Oracle客户端的项目中,必须是32位(64位不能用于Visual Studio),那么我需要在应用程序池中允许32位
  5. 配置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>