如何获取 ASP.NET Core 当前启动地址?

前言

上次,我们介绍了配置ASP.NET Core启动地址的多种方法。

那么,如何通过代码方式,获取启动后的地址?

WebApplication.Urls 对象

使用 WebApplication.Urls.Add 方法可以添加启动地址。

那么,使用 WebApplication.Urls 应该可以获取启动地址。

那如何在启动完成后能够访问 WebApplication.Urls 呢?

  我们可以不用Run方法启动,而是等待Start完成:

await app.StartAsync();Console.WriteLine(app.Urls.First());await app.WaitForShutdownAsync();

但是,这是 .NET 6 的实现方式, .NET 5 没有这个对象。

IServerAddressesFeature

查看 WebApplication.Urls 的源码,发现它实际调用的是IServerAddressesFeature提供的属性,而该实例可以通过IServer获取:

/// <summary>
/// The list of URLs that the HTTP server is bound to.
/// </summary>
public ICollection<string> Urls => ServerFeatures.GetRequiredFeature<IServerAddressesFeature>().Addresses;internal IFeatureCollection ServerFeatures => _host.Services.GetRequiredService<IServer>().Features;

更重要的是,该接口支持所有 ASP.NET Core 版本:

4ae28d2a4739908e2122189edd02b458.png

因此,最后的实现代码如下:

public static async Task Main(string[] args)
{var host = CreateHostBuilder(args).Build();await host.StartAsync();var server = host.Services.GetService(typeof(IServer)) as IServer;     Console.WriteLine(server.Features.Get<IServerAddressesFeature>().Addresses.First());await host.WaitForShutdownAsync();
}

结论

获取 ASP.NET Core 启动地址在某些场景下非常有用,比如服务注册。

想了解更多内容,请关注我的个人公众号”My IO“

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CASS精品教程】CASS9.1查询功能大全(坐标、长度、面积、方位角)

文章目录 1. 查询指定点坐标2. 查询两点距离及方位3. 查询线长4. 查询实体面积CASS9.1中提供了查询指定点坐标、查询两点距离及方位、查询线长、查询实体面积等查询功能,如下图所示: 本文以动画演示的方式,对以上提到的功能进行讲解。 1. 查询指定点坐标 点击【工程应用】…

自定义smokeping告警(邮件+短信)

前段时间接到公司IT同事需求&#xff0c;帮助其配置smokeping的告警功能&#xff0c;之前配置的姿势有些问题&#xff0c;告警有些问题&#xff0c;现在调试OK&#xff0c;在此将关键配置点简单记录下。 关键的配置项主要有&#xff1a; 定义告警规则并配置将告警信息通过管道交…

selenium 定制启动 chrome 的选项

2019独角兽企业重金招聘Python工程师标准>>> selenium 定制启动 chrome 的选项 博客分类&#xff1a; java 搜索引擎&#xff0c;爬虫 使用 selenium 时&#xff0c;我们可能需要对 chrome 做一些特殊的设置&#xff0c;以完成我们期望的浏览器行为&#xff0c;比如…

平台级 SAAS 架构的基础:统一身份管理系统

业内在用户统一身份认证及授权管理领域&#xff0c;主要关注 4 个方面&#xff1a;集中账号管理&#xff08;Account&#xff09;、集中认证管理&#xff08;Authentication&#xff09;、集中授权管理&#xff08;Authorization&#xff09;和集中审计管理&#xff08;Audit&a…

【ArcGIS Pro微课1000例】0017:ArcGIS Pro 2.8制作炫酷的ETOPO1全球DEM地图

ArcGIS Pro相对于ArcGIS,在制图方面做了很大的提升,做出的地图更加优美,本文讲解基于NOAA的ETOPO1数据全球DEM数据制作炫酷的全球DEM地图,先看效果再教学! 1. 效果展示 全球 澳大利亚大陆

Js中的for in

2019独角兽企业重金招聘Python工程师标准>>> 后台数据&#xff1a; List<Map<String, Object>> uTags query.selectAllList("velocity.userGetTags", map); 前端解析&#xff1a; for(var i in data.content){//由于这里是List[i](Map).IDc…

VMWare 安装 Linux

参考 &#xff1a; http://www.aboutyun.com/thread-6780-1-1.html 这的是很详细。赞一下 我这里就简化一下。 1 下载&#xff1a; VMWare : https://download3.vmware.com/software/wkst/file/VMware-workstation-full-10.0.0-1295980.exe ubuntu : http://www.aboutyun…

【ArcGIS Pro微课1000例】0018:ArcGIS Pro 2.8通过OLE DB与个人数据库建立连接案例

对于个人数据库,Access程序可以直接打开。本文讲解在ArcGIS Pro2.8中通过OLE DB与个人数据库MDB建立联系的方法与过程。 文章目录 1. 个人数据库准备2. OLE DB连接个人数据库1. 个人数据库准备 准备一个个人数据库,在上面右键→复制文件地址。 文件地址为:"C:\test.md…

《ASP.NET Core 6框架揭秘》实例演示[02]:基于路由、MVC和gRPC的应用开发

ASP.NET Core可以视为一种底层框架&#xff0c;它为我们构建出了基于管道的请求处理模型&#xff0c;这个管道由一个服务器和多个中间件构成&#xff0c;而与路由相关的EndpointRoutingMiddleware和EndpointMiddleware是两个最为重要的中间件。MVC和gRPC开发框架就建立在路由基…

什么是 JWT -- JSON WEB TOKEN

什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准&#xff08;(RFC 7519).该token被设计为紧凑且安全的&#xff0c;特别适用于分布式站点的单点登录&#xff08;SSO&#xff09;场景。JWT的声明一般被用来在身份提供者和服务提…

【ArcGIS微课1000例】0024:ArcGIS如何连接文件夹、设认工作目录、默认地理数据库、相对路径与绝对路径?

ArcGIS软件在初次安装完成或者为了工作的方便,通常需要连接到指定的文件夹、设置默认工作路径,默认地理数据库、相对路径与绝对路径等。 文章目录 1. 文件夹连接2. 默认工作目录3. 默认地理数据库4. 相对路径与绝对路径1. 文件夹连接 在初次安装完ArcGIS时,默认没有文件夹连…

【Spring Cloud】Redis缓存接入监控、运维平台CacheCloud

CacheCloud CacheCloud提供一个Redis云管理平台&#xff1a;实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减少运维成本和误操作&#xff0c;提高机器的利用率&#xff0c;提供灵活的伸缩…

[Win10应用开发] 使用 Windows 推送服务 (WNS)

前言 Windows 推送服务&#xff08;WNS&#xff09;也是 Win10 通知机制中的一种&#xff0c;今天与大家一起学习一下有关WNS的相关知识。使用 Windows 推送服务的前提是你需要有一个微软开发者账号&#xff0c;这样才能得到一些合法的密钥信息用于与WNS服务器完成通讯操作。 …

Windows 11 新版 25158 推送!全新搜索框和图标、小组件动态内容和通知标记

面向 Dev 频道的 Windows 预览体验成员&#xff0c;微软现已推送 Windows 11 预览版 Build 25158。主要变化1.微软宣布为 Windows 11 搜索引入全新视觉体验&#xff0c;由搜索框或重新设计的搜索图标呈现。目前该功能仅向部分 Windows 预览体验成员推出&#xff0c;将在未来向所…

【BIM入门实战】Revit创建地形的几种方法及优缺点

Revit在体量和场地选项卡的【地形表面】工具可以创建三维地形,有三种方法:放置点、指定点文件和导入实例文件、倾斜摄影点云技术和InfraWorks地形生成。 文章目录 1. 放置点2. 指定点文件3. 导入实例文件4. 倾斜摄影点云技术5. InfraWorks地形生成1. 放置点 放置点功能位于体…

2024年起重机司机(限门式起重机)证考试题库及起重机司机(限门式起重机)试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年起重机司机(限门式起重机)证考试题库及起重机司机(限门式起重机)试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作…

微服务架构下的统一身份认证和授权

一、预备知识 本文讨论基于微服务架构下的身份认证和用户授权的技术方案&#xff0c;在阅读之前&#xff0c;最好先熟悉并理解以下几个知识点&#xff1a; 微服务架构相关概念&#xff1a;服务注册、服务发现、API 网关身份认证和用户授权&#xff1a;SSO、CAS、OAuth2.0、JW…

使用vh来制作高度自适应页面和元素垂直居中

为什么80%的码农都做不了架构师&#xff1f;>>> vh单位 vh是CSS3中的一个长度单位&#xff0c;其值为&#xff1a;100vh 视窗高度。即如果窗口高度为500px&#xff0c;那么 1vh 5px。具体的值会随着浏览器视窗高度的改变而实时改变&#xff0c;因此可以利用这个单…

传智168期JavaEE struts2杜宏 day32~day33(2017年2月15日23:27:09)

struts2学习完毕&#xff0c;寒假学习效率还不错。 笔记链接 链接&#xff1a;http://pan.baidu.com/s/1boBJLVp 密码&#xff1a;wwl4转载于:https://www.cnblogs.com/huangtao1996/p/6403886.html

GitLab的安装、配置、使用

前言上周去参与“中国数字经济创新发展大会”了&#xff0c;然后又忙新项目的事情&#xff0c;博客又有一段时间没有更新&#xff0c;今天周一事情比较少&#xff0c;立刻开始写文&#xff0c;最近有挺多值得记录的东西~进入正文&#xff0c;最近我们搭了个Gitlab&#xff0c;并…