提问



如何在IIS Express中启用远程请求?斯科特格思里写道,这是可能的,但他没有说出如何。[42]

最佳参考


IIS团队网站上有一篇博客文章,现在解释如何在IIS Express上启用远程连接。以下是该帖子的相关部分:[43]



  在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


您可能需要进行三项更改。



  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时,你应该看到一条消息,如



  已成功为网站hello world应用程序/注册URLhttp://*:8080/


其它参考2


我记得几个月前尝试这个工作流时遇到了同样的问题。


这就是为什么我专门为这种情况编写了一个简单的代理实用程序:https://github.com/icflorescu/iisexpress-proxy。[44]


使用IIS Express代理,一切都变得非常简单 - 不需要netsh http add urlacl url=vaidesg:8080/user=everyone或者搞乱你的applicationhost.config。[45]


只需在命令提示符下发出:


iisexpress-proxy 8080 to 3000


...然后你可以将远程设备指向http://vaidesg:3000。[46]


大多数时候更简单的更好。

其它参考3


在我找到iisexpress-proxy之前,没有什么对我有用。 [47]


以管理员身份打开命令提示符,然后运行


npm install -g iisexpress-proxy


然后


iisexpress-proxy 51123 to 81


假设您的Visual Studio项目在localhost:51123上打开,并且您想要访问外部IP地址x.x.x.x:81


编辑:只是提到它适用于noip.com

其它参考4


一个很好的资源是在开发时使用SSL更容易使用StanExselman的IISExpress。[48]


您所追求的是让IIS Express通过端口80向外部提供部分

其它参考5


作为旁注:


netsh http add urlacl url=http://vaidesg:8080/ user=everyone


这仅适用于Windows的英文版本。如果您使用的是本地化版本,则必须将everyone替换为其他内容,例如:



    使用荷兰语时
  • Iedereen

  • 使用德语版时的Jeder

  • 使用匈牙利语时
  • Mindenki



否则您将收到错误(创建SDDL失败,错误:1332)

其它参考6


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



  1. 获取主机IP地址:Windows命令行中的ipconfig

  2. GoTo $(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. 如果您尝试从远程
  7. 连接,可能会查找一些防火墙问题

其它参考7


我在Visual Studio Professional 2015中安装了Conveyor by Keyoti解决了这个问题。传送带使用端口(45455)生成REMOTE地址(您的IP),以启用外部请求。例:


[49]


Conveyor允许您从网络上的外部平板电脑和手机或Android模拟器测试Web应用程序(无http://10.0.2.2:<hostport>)


步骤如下:


https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti[50]

其它参考8


如果您尝试过Colonel Panic的答案,但在Visual Studio中不起作用,请尝试以下方法:


在IIS Express配置中添加另一个<binding />


<bindings>
    <binding protocol="http" bindingInformation="*:8080:localhost" />
    <binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>


最后,您必须以管理员身份运行Visual Studio

其它参考9


帮助我的是右键单击IISExpress图标,显示所有应用程序。然后选择网站,我看到它使用了哪个aplicationhost.config,并且纠正完美。


[52]

其它参考10


此问题的接受答案是使IIS Express与webmatrix一起使用的指南。我发现本指南在尝试使用VS 2010时更有用。[53]


我只是按照步骤3& 4(以管理员身份运行IIS Express)并且必须暂时禁用我的防火墙以使其正常工作。

其它参考11


您可以尝试设置端口转发,而不是尝试修改IIS Express配置,添加新的HTTP.sys规则或将Visual Studio作为管理员运行。


基本上你需要将你的网站运行的IP:PORT转发到你机器上的其他一些空闲端口,但是在外部网络适配器上,而不是localhost。


问题是IIS Express(至少在Windows 10上)绑定到[::1]:port意味着它侦听IPv6端口。您需要考虑到这一点。


以下是我的工作方式 - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html [54]


希望能帮助到你。

其它参考12


我在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(入站规则)中的请求



它起作用了!

其它参考13


这就是我使用Visual Studio 2015为Windows 10启用的远程访问,包括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提示符并运行以下命令:


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未以管理员身份运行,则可能会失败。现在一切都应该有效。


[55]

其它参考14


如果从Admin运行Visual Studio,则可以添加


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


要么


<binding protocol="https" bindingInformation="*:8443:*" />





%userprofile%\My Documents\IISExpress\config\applicationhost.config

其它参考15


我启用了本地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进行开发(然后允许远程连接)但反过来您必须始终以管理员身份运行...我不喜欢这样。

其它参考16


我无法向我本地网络中的其他用户提供iis请求,我所要做的就是(除了上面的内容)重启了我的BT Hub路由器。

其它参考17


这非常棒,甚至涵盖了具有漂亮域名的HTTPS:


http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx[56]


如果以上链接消失,我在其他地方找不到真正令人敬畏的部分:


> 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中的证书属性获得的指纹。

其它参考18


我做了以下,并能够连接:


1)将IIS快速配置绑定从本地主机更改为*


binding protocol =httpbindingInformation =*:8888:*


2)在防火墙上定义入站规则以允许协议类型的特定端口:tcp


3)添加以下命令以添加端口的网络配置:
 netsh http add urlacl url=http://*:8888/user=everyone

其它参考19


我通过使用反向代理方法解决了这个问题。


我安装了wamp服务器并使用了apache web服务器的简单反向代理功能。


我添加了一个新端口来监听Apache Web服务器(8081)。然后我将代理配置添加为该端口的虚拟主机。


<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>

其它参考20


[[项目属性对话框]]


使用VisualStudio 2017和NetCore API项目进行开发:


1)在Cmd-Box中:ipconfig/all确定IP地址


2a)在Project properties-> Debug选项卡中输入检索到的IP地址


2b)选择一个端口并将其附加到步骤2a的IP地址。


3)在防火墙中添加允许规则,以允许所选端口上的传入TCP流量
 (我的防火墙通过对话框触发:阻止或向防火墙添加规则)。在这种情况下添加将做的伎俩。


上述解决方案的缺点:


1)如果使用动态IP地址,则需要重新执行上述步骤,以防分配另一个IP地址。


2)您的服务器现在有一个您可能忘记的开放端口,但是这个开放端口仍然是不受欢迎的访客的邀请。