如何从外部网络访问.NET Core上的WEB API?

nzrxty8p  于 2023-03-24  发布在  .NET
关注(0)|答案(4)|浏览(297)

我想从外部访问我的API?
在本地机器上,我像这样访问我的API:

https://localhost:44377/api/stations

例如,我的IP地址是:186.143.119.43
我需要做哪些更改才能通过外部网络查看它?
这是我的launchSettings.json文件:

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:51429",
      "sslPort": 44377
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "weatherforecast",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "WebAPI": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "weatherforecast",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

如何从外部网络访问此API?

c90pui9n

c90pui9n1#

Kestral Web服务器的默认绑定仅绑定到localhost,并且不允许公共访问。但是,您可以通过从命令行发送自定义URL值来覆盖此设置:
dotnet run --urls http://0.0.0.0:8080
您也可以直接在Program.cs文件中配置自定义URL值:

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder
                .UseUrls("http://0.0.0.0:8080")
                .UseStartup<Startup>();
            });
 }

p.s.上述方法仅在防火墙允许访问配置的TCP端口(8080)时才有效。

cld4siwp

cld4siwp2#

如果是出于测试目的,请考虑使用www.example.com这样的服务ngrok.com

ckocjqey

ckocjqey3#

你需要配置你的端口和你的IP在root Idk如何做,但我早做它的服务器为我的游戏之一,或者你可以使用NGROK(我用它作为临时服务器)

erhoui1w

erhoui1w4#

正如@Suky Laplante和@Nisd已经回答的那样,你可以使用Ngrok。设置和安装你需要的一切需要5分钟。这是我发现的最快,最简单的解决方案。我还将添加一个视频教程的链接,这可能对初学者有用。
youtube video Ngrok tutorial step by step

相关问题