无法使用ip:port访问WEB API,但在VS调试模式下可以使用localhost:port

时间:2013-10-24 00:53:52

标签: c# android asp.net debugging localhost

我正在尝试从.net编写一个WEB API,并尝试让我的Android应用程序从sql server数据库中查询一些数据。

我已经编写了web api,它在调试模式下运行良好。

我的问题是我注意到该应用程序的网址是localhost:port并且运行正常。 但是,当我尝试将其更改为MYIP:port (eg. http:192.168.X.1234)MYHOSTNAME:port (eg win7home:1234)时,这会给我Bad Request - Invalid Hostname

我知道我可以将其部署到IIS并且我的IIS已经设置但是我只是想知道它怎么会在调试模式下无效?

我有没有办法在调试模式下运行它并同时在我的Android上测试,而不是每次我想要进行更改时都要部署它?

6 个答案:

答案 0 :(得分:41)

如果您在调试模式下运行它,我假设您正在使用IIS-Express。

默认情况下,IIS-Express仅绑定到localhost

为避免这种情况,您可以打开位于C:\Users\<username>\My Documents\IISExpress\config\applicationhost.config的IIS-Express应用程序配置文件,并修改网站的绑定信息。

变化

<binding protocol="http" bindingInformation="*:55284:localhost" />

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

您还必须在更改后重新启动IIS-Express。

答案 1 :(得分:16)

安东和马修的答案都向我指出了正确的方向

所以这就是我所做的

  1. 以管理员模式运行Visual Studios

  2. 更改了绑定协议,并按照建议允许传入方向 http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer

    但在那之后,我的服务不可用(503)错误

  3. 所以我跟着这个: IIS Express Enable External Request - 503 只添加了端口协议和端口:ip协议,

             

  4. 在我的机器浏览器和手机上都可以使用。

    不太确定为什么需要第3步 - 我的假设是(VS需要localhost url指向并且ip url用于从另一台机器访问)

答案 2 :(得分:7)

当我想分享我的localhost IIS时,我遇到了同样的问题,所以有些人可以输入我的机器名或IP并连接到我的web应用程序实例。所以,如果这是http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer时所需要的。它适用于Silverlight和MVC应用程序。我甚至设置了断点,他们被远程机器击中。

答案 3 :(得分:2)

在解决方案目录的.vs \ config \ applicationHost.config文件中,更改行

 <binding protocol="http" bindingInformation="*:1234:localhost" />

<binding protocol="http" bindingInformation=":1234:192.168.1.35" />

,然后以管理员身份运行Visual Studio。重新启动IIS Express。该解决方案对我有用。

答案 4 :(得分:0)

Visual Studio代码中进行相同的调试问题,我通过添加以下内容解决了这个问题:

"env": {
      // ...
      "ASPNETCORE_URLS": "http://*:5000" // change to the port you are using
      // ...
},

..到 launch.json

显然,默认情况下它会将http协议绑定到“localhost:5000”,因此它适用于 localhost ,但不适用于 ip address

如果您尝试通过来自其他计算机的请求来查找断点,请不要忘记检查防火墙设置(和/或防病毒)

希望这会有所帮助

答案 5 :(得分:0)

我一直在寻找这个,终于为调试到控制台应用程序(启动:项目)的人找到了解决方案。

在 Program.cs 类中,您必须添加 UseUrls()

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder
                       .UseUrls("http://0.0.0.0:5000", "https://0.0.0.0:5001")
                       .UseStartup<Startup>();
                });

我无法在网上的任何地方找到它,但我在它工作的一些旧项目中找到了它。