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

d7v8vwbk  于 12个月前  发布在  Android
关注(0)|答案(7)|浏览(165)

我试图写一个WEB API从.net和尝试为我的Android应用程序从SQL Server数据库查询一些数据。
我有Web API编写,它在调试模式下运行良好。
我的问题是,我注意到该应用程序的URL是localhost:port,它运行正常。然而,当我试图将其更改为MYIP:port (eg. http:192.168.X.1234)MYHOSTNAME:port (eg win7home:1234)时,这给了我Bad Request - Invalid Hostname
我知道我可以部署到IIS和我的IIS是设置,但我只是想知道为什么它不工作在调试模式?
有没有一种方法可以让我在调试模式下运行它,同时在我的Android上进行测试,而不是每次我想要进行更改时都必须部署它?

zengzsys

zengzsys1#

如果你在调试模式下运行它,我假设你使用的是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。

fgw7neuy

fgw7neuy2#

安东和马修的答案都为我指明了正确的方向
所以我就这么做了
1.以管理员模式运行Visual Studios
1.更改了绑定协议,并允许按建议http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer输入方向
但在此之后,我有一个服务不可用(503)错误
1.所以我遵循了这个:IIS Express Enable External Request - 503只添加了端口协议和port:ip协议,
比它在我的机器浏览器和手机上都好用。
不太确定为什么需要第三步-我的假设是(VS需要localhost url来指向,ip url用于从另一台机器访问)

j91ykkif

j91ykkif3#

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

pwuypxnk

pwuypxnk4#

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

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

字符串

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


并以管理员身份运行Visual Studio。重新启动IIS Express。此解决方案对我有效。

yzckvree

yzckvree5#

我一直在寻找这个一段时间,终于找到了一个解决方案的人谁调试到控制台应用程序(启动:项目)。
在Program.cs类中,您必须添加URL URL()

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>();
                });

字符串
我在网上找不到这个,但我在一些旧项目中找到了它。

smtd7mpg

smtd7mpg6#

Visual Studio Code中调试时遇到了同样的问题,我通过添加以下内容解决了这个问题:

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

字符串
. to launch.json
显然,默认情况下,它将http协议绑定到'localhost:5000',所以它可以与 localhost 一起工作,但不能与 ip address 一起工作。
如果您试图通过来自其他计算机的请求来命中断点,请不要忘记检查您的防火墙设置(和/或防病毒)
希望这有帮助

wfsdck30

wfsdck307#

.net核心,您可以使用ip或机器名访问API

var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseUrls("http://0.0.0.0:5000", "https://0.0.0.0:5001");
var app = builder.build();
app.Run();

字符串

相关问题