c# - 从 Razor View 中获取绑定(bind) URL

标签 c# asp.net

我想在 Razor Pages View 中显示 Web 服务器的绑定(bind) URL。我可以从 Main 中访问它们,如下所示:

    var builder = WebApplication.CreateBuilder(args);
    //...
    var app = builder.Build();
    //...
    await app.StartAsync();
    //...
    // Debug here...

...通过在“调试此处”处设置断点并检查 app.Urls (应用程序是 Microsoft.AspNetCore.Builder.WebApplication),但我可以请勿在 DI 配置期间添加此内容,因为它仅在 StartAsync 之后才会填充。那么,我如何从该 Web 应用程序中运行的 Razor Pages View 中访问此信息?

最佳答案

创建自定义配置类来保存 URL。

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

在您的 Program.cs 文件中,添加此自定义配置类的注册作为单例服务:

builder.Services.AddSingleton<WebServerUrls>();
// ...


var builder = WebApplication.CreateBuilder(args);
// ...

var app = builder.Build();
// ...

await app.StartAsync();
var webServerUrls = app.Services.GetRequiredService<WebServerUrls>();
webServerUrls.Urls.AddRange(app.Urls);

// ...

在 Razor Pages View 中,使用 @inject 指令注入(inject) WebServerUrls 类并访问绑定(bind)的 URL:

@page
@model YourPageModel

@inject WebServerUrls WebServerUrls

<h1>Bound URLs</h1>

<ul>
    @foreach (var url in WebServerUrls.Urls)
    {
        <li>@url</li>
    }
</ul>

关于c# - 从 Razor View 中获取绑定(bind) URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77054135/

相关文章:

c# - 开始 ASP.NET 和 C#

sql - 通知客户数据库更改的最佳方法

javascript - 当其他文本框被填充时填充文本框

c# - 如何在 TcpClient 类中使用 SSL

c# - 聚合事件网格事件

c# - 当使用 Contract.Assert(true) 并且该方法必须返回某些内容时该怎么办?

c# - 数据访问模式类似于存储库但不完全

asp.net - 上传到 Azure

c# - 禁用 c# 控制台的最大化和最小化按钮

C# 将字符串转换为对象