我想在 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/