tom*_*ing 6 .net-core asp.net-core asp.net-core-2.0
我有一个 ASP.NET Core 2.0 Web 应用程序,我需要在启动期间将应用程序的 URL 传递出去,以便集成到其他应用程序中。
在 Visual Studio (IIS Express) 下运行时,IApplicationBuilder.ServerFeatures.Get<IServerAddressesFeature>().Addresses
包含我的应用程序绑定到的 URL(例如http://localhost:1234
)。
运行 using 时dotnet.exe myapp.dll
,相同的集合为空,但是,我在 stdout 上看到一行说Now listening on: http://localhost:5000
。
问题是,要获取 URL,我是否必须解析 dotnet.exe 的输出以获取行开头Now listening on:
,还是有一种不那么脆弱的方法?
这是由于 2017 年 3 月对 Kestrel 进行了更改。来自公告:
当没有明确配置地址时,托管不再添加默认服务器地址
该虚拟主机提供商将不再添加默认的服务器地址
http://localhost:5000
到IServerAddressesFeature
指定的无时。默认服务器地址的配置现在将由服务器负责。在指定的地址
IServerAddressesFeature
旨在由服务器被用作回退时,直接指定没有明确的地址。
当没有显式配置地址时,Hosting不再添加默认服务器地址中有一个如何处理此问题的示例:
如果您正在实施服务器并依赖于
IServerAddressesFeature
由托管设置的 ,则将不再设置,并且在未配置地址时应添加默认值。举个例子:Run Code Online (Sandbox Code Playgroud)var serverFeatures = featureCollection.Get<IServerAddressesFeature>(); if (serverFeatures .Addresses.Count == 0) { ListenOn(DefaultAddress); // Start the server on the default address serverFeatures.Addresses.Add(DefaultAddress) // Add the default address to the IServerAddressesFeature }
归档时间: |
|
查看次数: |
2822 次 |
最近记录: |