45

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

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

我的问题是我注意到该应用程序的 urllocalhost:port运行良好。但是,当我尝试将其更改为MYIP:port (eg. http:192.168.X.1234)MYHOSTNAME:port (eg win7home:1234)这给了我Bad Request - Invalid Hostname.

我知道我可以将它部署到 IIS 并且我的 IIS 已设置,但我只是想知道它为什么不能在调试模式下工作???

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

4

6 回答 6

48

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

于 2013-10-24T00:58:12.017 回答
22

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

所以这就是我所做的

  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 协议,

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

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

于 2013-10-24T18:04:05.513 回答
7

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

于 2013-10-24T00:59:08.803 回答
5

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

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

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

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

于 2018-08-22T18:43:17.230 回答
1

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

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

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

于 2021-01-16T06:27:40.753 回答
0

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

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

..启动.json

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

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

希望这可以帮助

于 2018-03-17T18:21:40.843 回答