You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Razor Pages视图中获取Web服务器绑定的URL?

在Razor Pages视图中显示Web服务器绑定URL

你可以通过以下步骤实现需求:

1. 创建URL存储服务

定义一个单例服务来保存服务器绑定URL——这些URL仅在StartAsync执行后才会被填充:

public class ServerUrlsProvider
{
    public IReadOnlyList<string> Urls { get; set; } = new List<string>();
}

2. 注册服务到DI容器

在Program.cs中把该服务注册为单例,确保整个应用生命周期内可以共享实例:

var builder = WebApplication.CreateBuilder(args);

// 注册ServerUrlsProvider
builder.Services.AddSingleton<ServerUrlsProvider>();

// 其他常规配置(如添加Razor Pages)
builder.Services.AddRazorPages();

var app = builder.Build();

3. 启动后填充URL信息

在调用StartAsync完成应用启动后,从DI容器中获取服务实例,将app.Urls赋值给服务的属性:

// 中间件配置等常规代码
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();

// 启动后获取并保存服务器绑定URL
await app.StartAsync();
var urlsProvider = app.Services.GetRequiredService<ServerUrlsProvider>();
urlsProvider.Urls = app.Urls;

await app.RunAsync();

4. 在Razor Page中注入并传递URL到视图

在页面后台代码(如Index.cshtml.cs)中注入ServerUrlsProvider,将URL数据暴露给视图:

public class IndexModel : PageModel
{
    private readonly ServerUrlsProvider _urlsProvider;

    public IndexModel(ServerUrlsProvider urlsProvider)
    {
        _urlsProvider = urlsProvider;
    }

    public IReadOnlyList<string> ServerUrls { get; set; }

    public void OnGet()
    {
        ServerUrls = _urlsProvider.Urls;
    }
}

5. 在视图中展示URL

在对应的Razor视图(如Index.cshtml)中遍历并显示所有绑定的URL:

<h3>当前服务器绑定URL:</h3>
<ul>
    @foreach (var url in Model.ServerUrls)
    {
        <li>@url</li>
    }
</ul>

补充说明

  • 该方案仅在应用启动时获取一次URL,若需动态监听URL变更(此类场景极少),需额外结合服务器事件监听逻辑。
  • app.Urls会返回应用实际绑定的所有地址,包含HTTP、HTTPS等不同协议的URL。

内容的提问来源于stack exchange,提问作者Jez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:22:20