内容简介:分享 ASP.NET Core 菜烏問題一枚。使用 Visual Studio 或 dotnet 命令列工具編譯發佈 ASP.NET Core 專案後,執行 dotnet WebAsmName.dll 可啟動 Kestrel 執行網站,預設是聽 httq://localhost:5000 及 httqs://localhost:5001。延伸閱讀:有趣的是,當我以 microsoft/dotnet:2.1-aspnetcore-runtime Image 將同樣的 ASP.NET Core 網站包成 Do
分享 ASP.NET Core 菜烏問題一枚。
使用 Visual Studio 或 dotnet 命令列 工具 編譯發佈 ASP.NET Core 專案後,執行 dotnet WebAsmName.dll 可啟動 Kestrel 執行網站,預設是聽 httq://localhost:5000 及 httqs://localhost:5001。延伸閱讀: ASP.NET Core 練功筆記 1 、 ASP.NET Core 練功筆記 2 – Ubuntu + SQLite + Dapper
有趣的是,當我以 microsoft/dotnet:2.1-aspnetcore-runtime Image 將同樣的 ASP.NET Core 網站包成 Docker 容器,設定檔沒動也沒設參數,網站卻會改掛在 80 Port。延伸閱讀: ASP.NET Core Docker 筆記 1 - 初探
就這麼知其然不知其所然混了好幾個月,是該花點時間把它搞清楚。
答案很簡單,依據 官方文件 ,Kestrel 聽什麼 Port 可透過以下幾種方式控制:
- 不設定(No Configuration)
預設聽 httq://localhost:5000 及 httqs://localhost:5001 (前題是需先設好 SSL 憑證) - 使用 ASPNETCORE_URLS 環境參數
在 Docker 裡自動改聽 80 Port 的謎底解開了 - 在 Docker 容器中 ASPNETCORE_URLS 環境變數被設成 http://+:80
- dotnet Web.dll 時加上 --urls 參數
例如以下範例:
- 透過 appSettings.json 指定
加入 Kestrel / EndPoints / Http / Url 指定,範例如下:{ "Logging": { "LogLevel": { "Default": "Warning" } }, "Kestrel": { "EndPoints": { "Http": { "Url": "http://localhost:5123" } } } }
- 呼叫 UseUrls() 擴充方法
UseUrls() 可傳入一或多個端點 URL 指定 Kestrel 網站要聽的 Port,但將設定寫死在程式碼不是好主意,略過。public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseUrls("http://localhost:5123");
實務上讓 Kestrel 直接對外提供服務的機會不多,中間多會搭配 IIS、Nginx 等 Reverse Proxy。即使是無 Docker 環境,我們也只需有能力指定錯開 TCP Port 避免打架就夠了。至於要掛載多個 Port、依 Host Header 導向不同網站、設定 SSL 憑證,交給 Nginx、Certbot 才是王道。 官方文件 還有很多關於 Kestrel 進階設定的介紹,等到要用時再查。
Summary the ways to configure Kestrel tcp port.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- c# – “SMTP主机未指定” – 但是是否指定?
- 运维安全 | 如何限制指定账户不能SSH只能SFTP在指定目录
- Zabbix监控指定端口
- Android指定专用APN
- iOS 指定初始化方法
- C++在指定内存构造对象
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
产品经理的第二本书
[美] 哥乔斯 / 戴维侬 / 中国财政经济出版社 / 2004-4 / 39.80元
产品经理的第二本书:产品经理实战技巧指南,ISBN:9787500570950,作者:(美)琳达·哥乔斯(Linda Gorchels)著;戴维侬译;戴维侬译一起来看看 《产品经理的第二本书》 这本书的介绍吧!