我正在尝试从.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上测试,而不是每次我想要进行更改时都要部署它?
答案 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)
安东和马修的答案都向我指出了正确的方向
所以这就是我所做的
以管理员模式运行Visual Studios
更改了绑定协议,并按照建议允许传入方向 http://johan.driessen.se/posts/Accessing-an-IIS-Express-site-from-a-remote-computer
但在那之后,我的服务不可用(503)错误
所以我跟着这个: IIS Express Enable External Request - 503 只添加了端口协议和端口:ip协议,
在我的机器浏览器和手机上都可以使用。
不太确定为什么需要第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>();
});
我无法在网上的任何地方找到它,但我在它工作的一些旧项目中找到了它。