16

客观的

我正在寻找最简单的分步设置过程,以使用我的 IP 地址作为 URL 来调试我的 ASP.NET MVC 4 应用程序。我希望能够使用我计算机的本地 IP 地址(例如 - http://192.168.1.109:25968)从我的 Android 手机访问该应用程序,该手机通过 Wi-Fi 连接到我的本地网络。我在 Windows 7 上运行 Visual Studio 2012 RC。

这个问题已经被另外两个问题(这个这个)解决了,但是答案非常简短,根本没有帮助我。之前我不得不通过敲打我的电脑并盲目地更改每个设置直到某些东西起作用来解决这个问题。我不想再经历一次。我想了解这次我在做什么。

设置信息

该项目只是一个默认的 ASP.NET MVC 4 Internet 应用程序。我很确定我还没有改变任何东西。

我的应用程序属性中的 Web 选项卡设置为“使用本地 IIS Web 服务器”,并且我选中了“使用 IIS Express”。项目网址是http://localhost:25968/. 我看到“本地主机”可能有问题,但 VS 不会让我输入 IP 地址或通配符。

我的应用程序的 IIS Express applicationhost.config 文件如下所示。

<site name="APPLICATION_NAME" id="13">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\USERNAME\Documents\Visual Studio 11\Projects\APPLICATION_NAME" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:25968:localhost" />
    </bindings>
</site>

发生了什么

当我从主机连接到该站点时,http://localhost:25968它工作得很好。如果我尝试http://192.168.1.109:25968从主机使用,我会收到“错误请求 - 无效主机名,HTTP 错误 400。请求主机名无效。” 使用来自网络上另一台计算机的相同 URL,它只是超时。

4

4 回答 4

21

授予自己绑定到 localhost 和通配符网络适配器的权限,配置 IIS Express 以绑定到它们,并在防火墙上打开端口。通过使用通配符,您无需在 IP 地址更改时重新配置。

步骤详细信息:(他们假设端口号为 5555 - 请改用您的实际端口)

  1. 以管理员身份从命令提示符运行这些命令:

    netsh http add urlacl url=http://localhost:5555/ user="NT AUTHORITY\INTERACTIVE"
    netsh http add urlacl url=http://*:5555/ user="NT AUTHORITY\INTERACTIVE"
    
  2. .vs\config\applicationhost.config(或 VS2015 之前的%USERPROFILE%\Documents\IISExpress\config\applicationhost.config)中,将通配符绑定添加到您的站点。结果应如下所示:

    <site name="..." id="...">
        <!-- application settings omitted for brevity -->
        <bindings>
            <binding protocol="http" bindingInformation="*:5555:localhost" />
            <binding protocol="http" bindingInformation="*:5555:*" />
        </bindings>
    </site>
    
  3. 打开 IIS Express 站点的防火墙端口。您可以从管理命令提示符执行此操作:

    netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=5555 profile=private remoteip=localsubnet action=allow
    
于 2013-10-11T04:09:12.220 回答
5

试一试:

netsh http add urlacl url=http://192.168.1.109:25968/ user=everyone

来自:http: //johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer

您也许可以用计算机的主机名替换 IP 地址,这样您就不必在每次 IP 更改时都重新运行它。

于 2012-11-11T02:42:35.927 回答
1

我需要执行 cfeduke 提供的链接中的所有步骤。(不仅仅是他在回答中描述的那个。)

  1. 在“localhost”绑定后添加<binding protocol="http" bindingInformation="*:58938:192.168.1.42" />到 applicationhost.config。
  2. netsh http add urlacl url=http://192.168.1.42:58938/ user=everyone
  3. netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=58938 profile=private remoteip=localsubnet action=allow
于 2012-11-11T05:22:14.253 回答
0

如果你的机器上有Node.js试试这个工具:Ionut-Cristian Florescu

https://github.com/icflorescu/iisexpress-proxy

要安装它,只需在命令行上编写npm install -g iisexpress-proxy

然后检查您在项目中拥有的端口并将其映射到外部端口。 iisexpress-proxy [localPort] to [proxyPort]

于 2017-03-01T07:07:10.013 回答