从移动设备访问托管在本地主机上的ASP.NET Core 2.1 Web应用程序

13
我使用react创建了一个asp.net core 2.1网站应用程序。当我运行它时,它会在localhost:(某个端口)上托管。我想在我的移动设备上访问它。 我尝试通过将端口添加到Windows Defender防火墙的入站规则来从localhost访问它,但是没有成功。因此,我想要将IP地址更改为0.0.0.0:(某个端口),或者通过更改lauchSettings.json和Program.cs中的.UseUrls方法来将其托管在本地IPv4地址上。但这并不起作用,出现了应用程序无法运行的错误。 我尝试使用从Google上查询"我的ip地址"得到的外部IP地址,但这也没有帮助。

Picture of Program.cs file

Picture of lauchSettings.js

Error when changing lauchSettings.js


开发服务器的默认行为是不允许除本地主机以外的任何连接。如果您正在使用 Visual Studio 中的“运行”按钮,则除非进行一些额外的工作或将其部署到实际服务器,否则您将无法从任何其他地方连接到它。 - Adam Vincent
4个回答

29

我使用这个,或许可以帮到你

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseUrls("https://*:5566")
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>();

请注意,对于最新版本的.NET,您需要在launchSettings.json文件中设置URL,如下所示:

latest .Net version

请确保在防火墙中启用端口5566。从手机上访问 https://your_comp_ip_address:5566/ 应该可以正常工作。 将your_comp_ip_address更改为您的计算机IP地址,您可以在CMD中运行'ipconfig'来检查它

从Visual Studio中,运行应用程序本身,而不是IIS Express,从下拉菜单中选择AppName,然后按F5键。请查看下面的所有照片:

From The Drop Down, select the AppName to run it

Windows Firewall Ports, add a new Outbound Rule: Port, say give a range of 5560-5570

Check the IP address

Make sure when you run, a CMD is displayed, and check out the code https://*:5566

From your phone browser, enter the url correctly

And then, voila!!! Your Web App is running


1
不幸的是,无论我在UseUrls中写什么,它都不起作用。我认为launchSettings.json具有更高的优先级,但如果我在那里进行任何更改,它甚至无法运行该项目并显示我附加的上述错误。我添加了端口的入站规则。 - Andrea
你是用了 HTTPS 还是 HTTP? - Joseph Wambura
我已经更新了我的回答,适用于任何用户,无论是初学者还是高级用户。 - Joseph Wambura
2
谢谢,那个方法可行。我只想补充一下你的回答,手机应该和托管Web应用程序的PC在同一个Wi-Fi上。 - Andrea
1
是的,我忘了提到。手机和电脑应该连接在同一个WiFi/网络上。编程愉快,伙计。 - Joseph Wambura
1
尽管 .net core api 运行在 192.168.0.4:5566 上,但仍然无法从我的安卓手机连接...笔记本电脑和手机都在 同一wifi网络 中...但是可以通过模拟器连接,因为它们在同一台计算机上。 - Moumit

1

本地主机名总是指向当前设备的环回地址,因此在您的计算机上,本地主机名指向自身,在手机上,本地主机名也指向自身。如果您的手机连接到与计算机相同的网络,则可以启动特定的本地IP地址上的站点,而不是使用本地主机名并使用该IP地址进行连接。但我认为除了localhost之外,无法使用IISExpress。您可以使用不同的启动配置文件,并直接使用Kestrel和IP地址,而不是使用IISExpress。

如果您在计算机上使用Android模拟器,则可以通过允许模拟器连接到计算机的特殊IP地址访问站点,因此,如果在localhost:5566上运行,则从模拟器中,您将使用http://10.0.2.2:5566

我不确定其他iPhone等模拟器是否有不同的约定。


1
在大多数情况下,你只需要在 Properties/launchSettings.json 文件中用通配符 *(或本地局域网 IPv4 地址)替换 "localhost" 即可:
{
  // ...
  "profiles": {
    // ...
    "Moshoboga": {
      // ...
      // replace: "applicationUrl": "https://localhost:5001;http://localhost:5000"
      "applicationUrl": "https://*:5001;http://*:5000"
    }
  }
}

然后在您的局域网中的任何浏览器中导航到本地IP。在Windows上使用ipconfig,在Unix/Linux上使用ifconfig查找此信息。


1

对于较新的.NET Core(v6),只需将您的IP网址添加到launchSettings.json文件中的applicationUrl属性中,如下所示:

"applicationUrl":https://localhost:7001;http://localhost:7000;http://192.168.1.78:7000;https://192.168.1.78:7001"

您可以通过在cmd/powershell(Windows)中键入ipconfig来查找当前本地IP地址(IPv4)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接