如何設置 ASP.NET Core 程序監聽的 IP 和端口

Web 服務需要配置監聽的 IP 和端口纔可以對外提供真正的服務。本文介紹如何設置 ASP.NET Core 程序監聽的 IP 和端口。


ASP.NET Core 程序默認集成了 Kestrel 服務器,可以直接對外提供 Web 服務。雖然可以直接提供服務,但通常建議使用反向代理服務器來間接提供服務。因此,本文建議的大多數設置監聽 IP 和端口的方法都是“臨時方法”,即那種“配置出來”的方法,而不會直接寫死在代碼中。

如何選擇應該監聽的 IP 和端口?

一般來說,監聽的 IP 可以選擇本地迴環地址,特定的 IP 以及任意 IP,分別是:

  • 127.0.0.1 127.0.0.2 127.0.0.3…… 本地迴環地址
  • 101.199.96.22 特定的 IP
  • 0.0.0.0 任意 IP

監聽本地迴環地址時,則訪問僅限於本機應用程序,不需要管理員權限來添加防火牆配置。如果在本地計算機配置了反向代理服務器,則強烈推薦使用本地迴環地址。如果打算直接讓服務對外公開提供,則需要設置爲 0.0.0.0 任意 IP。

一臺計算機上不同的應用不能使用相同的端口,對於端口的選擇只要不重複即可。如果希望讓 ASP.NET Core 程序自動選擇一個不重複的端口,則將其指定爲 0。

配置方法

方法一:直接在項目中設置

在項目上右擊屬性,在調試標籤下可以修改應用的啓動 URL。雖然這裏修改的是項目的設置,最終生成的 ASP.NET Core 程序並不會使用這個設置,但每次通過項目打開時仍然可以使用這個設置。

在項目中設置

這種方式僅僅影響調試時候採用的域名 / IP 和端口號。因此,僅在調試期間生效,待發布後,可以直接接入到反向代理服務器中。

方法二:使用 Kestrel 服務器的配置(不推薦)

直接使用 Kestrel 服務器可以在沒有反向代理服務器的情況下直接對外提供 ASP.NET Core 的 Web 服務。

如果僅對外提供 http 服務,則設置非常簡單:

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

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
++              webBuilder.ConfigureKestrel(serverOptions =>
++              {
++                  serverOptions.Listen("0.0.0.0", 5000);
++              })
                .UseStartup<Startup>();
            });

如果希望加上 https 的支持,可以閱讀我的另一篇博客:

方法三:使用命令行參數指定

使用命令行參數 --urls 可以爲 ASP.NET Core 程序指定監聽的 URL。

dotnet ./blog.walterlv.com.exe --urls http://0.0.0.0:13800

這個 URL 中的幾個信息都會用到:http 協議,監聽任意 IP 地址,監聽端口 13800。

通常建議爲反向代理的服務選用 http,讓 https 的支持交給反向代理服務器去做,參見:

方法四:設置環境變量

設置環境變量 ASPNETCORE_URLS 即可爲 ASP.NET Core 程序指定監聽的 URL,格式與上面使用命令行參數是一樣的。

注意,這裏說的環境變量是單獨爲某一個程序設置的環境變量,而不是爲用戶賬戶或者操作系統設置的環境變量(那樣顯然會讓所有 ASP.NET Core 程序衝突)。所以通常都是用來在反向代理服務器中配置的。


我的博客會首發於 https://blog.walterlv.com/,而 CSDN 會從其中精選發佈,但是一旦發佈了就很少更新。

如果在博客看到有任何不懂的內容,歡迎交流。我搭建了 dotnet 職業技術學院 歡迎大家加入。

知識共享許可協議

本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名呂毅(包含鏈接:https://walterlv.blog.csdn.net/),不得用於商業目的,基於本文修改後的作品務必以相同的許可發佈。如有任何疑問,請與我聯繫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章