【问题标题】:Debugging an ASP.NET MVC application on an Android phone在 Android 手机上调试 ASP.NET MVC 应用程序
【发布时间】:2012-11-11 02:30:45
【问题描述】:

目标

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

其他两个问题(this onethis one)已经解决了这个问题,但答案非常简短,对我毫无帮助。之前我不得不通过敲打我的电脑并盲目地更改每个设置直到某些东西起作用来解决这个问题。我不想再经历一次。我想了解这次我在做什么。

设置信息

该项目只是一个默认的 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,它只是超时。

【问题讨论】:

    标签: android asp.net-mvc iis


    【解决方案1】:

    授予自己绑定到本地主机和通配符网络适配器的权限,配置 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(或者对于 pre-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
      

    【讨论】:

    • 我认为您的答案是最好的,但是您能否详细说明#3,以便此答案对其他人最有用以供参考?你会运行我在回答中所说的#3 吗?
    • @David:我还不需要深入研究防火墙细节,所以我不知道答案。我主要使用模拟器。我在开发计算机上使用物理电话与 IIS 通信的时间很短,以至于我通过暂时关闭防火墙“打开了端口”。
    • 很公平。无论如何,信息都在这里。很遗憾没有早点接受你的回答。这个问题已经收到了相当多的意见,我认为你的回答是最好的。再次感谢。
    • @David:我是 Stack Overflow 上一站式购物的粉丝,所以既然您是 netsh 命令效果很好,我将它纳入我的答案中。
    • 执行此操作后,我得到“无法连接到 Web 服务器 'IIS Express'”。有什么解决办法吗?
    【解决方案2】:

    试一试:

    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 更改时都重新运行它。

    【讨论】:

    • 现在输入 192.168.1.109:25968 给我“服务不可用 -- HTTP 错误 503”。在我的计算机上,当我尝试从网络上的另一台计算机访问链接时,连接就会超时。
    • 查看该 PC 的事件日志中是否有详细说明,特别是针对 HTTP.SYS。这可能是一个权限问题,甚至与不允许所有人访问 IIS Express 一样荒谬。
    • ...并检查以前的预订,或使用netsh http delete url=http://192.168.1.109:25968 删除预订(来自haacked.com/archive/2007/05/21/the-iis-7-team-rocks.aspx
    • 运行 netsh http delete urlacl url=http://192.168.1.109:25968/ 让我回到 HTTP 错误 400。(注意添加了 'urlacl')。
    • 这看起来正是您问题的解决方案:johan.driessen.se/posts/…
    【解决方案3】:

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

    1. 在“localhost”绑定后将&lt;binding protocol="http" bindingInformation="*:58938:192.168.1.42" /&gt; 添加到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

    【讨论】:

      【解决方案4】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-11
        • 2011-02-18
        • 1970-01-01
        • 2016-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多