繁体   English   中英

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

[英]Can't access WEB API with ip:port but can with localhost:port during VS debug mode

我正在尝试从 .net 编写一个 WEB API,并尝试让我的 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 上进行测试,而不是每次我想进行更改时都必须部署它?

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

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

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

改变

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

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

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

安东和马修的回答都为我指明了正确的方向

所以这就是我所做的

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

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

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

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

比它在我机器的浏览器和我的手机上都有效。

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

当我想共享我的本地主机 IIS 时,我遇到了同样的问题,所以有些人只需输入我的机器名称或 IP 并连接到我的 Web 应用程序实例。 因此,如果这是您在http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer时需要的。 它适用于 Silverlight 和 MVC 应用程序。 我什至设置了断点,它们是从远程机器上命中的。

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

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

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

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

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

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

..启动.json

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

如果您试图通过来自另一台计算机的请求命中断点,请不要忘记检查您的防火墙设置(和/或防病毒软件)

希望这可以帮助

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM