如何获取 ASP.NET Core 应用程序名称?

Ser*_*rge 4 asp.net-core asp.net-core-1.1

我想在 ASP.NET Core 1.1 的页脚中显示

© 2017 我的应用程序

<p>&copy; 2017 @(ApplicationName)</p>
Run Code Online (Sandbox Code Playgroud)

如何获取应用程序名称?

我找到了一篇关于这个主题的文章,但它令人困惑PlatformServices.Default.Application.ApplicationName,因为它说不要使用Microsoft.Extensions.PlatformAbstractions,但没有说明应用程序名称要使用什么......

Dur*_*ieh 8

You could try:

@using System.Reflection;
<!DOCTYPE html>
<html>
 ....

    <footer>
        <p>&copy; 2017 - @Assembly.GetEntryAssembly().GetName().Name</p>
    </footer>
</html>
Run Code Online (Sandbox Code Playgroud)

I am not sure it is a good way, but it works for me :)

在此处输入图片说明


Win*_*Win 6

有很多方法可以实现它。这是我在我的项目中的做法。

我的项目名称通常与应用程序名称不同,应用程序名称可能有空格或更长。因此,我将项目名称和版本号保留在appsettings.json文件中。

appsettings.json

{
  "AppSettings": {
    "Application": {
      "Name": "ASP.NET Core Active Directory Starter Kit",
      "Version": "2017.07.1"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

启动文件

将设置从appsettings.json文件加载 到AppSettingsPOCO。然后它会自动在 DI 容器中注册为IOptions<AppSettings>.

public void ConfigureServices(IServiceCollection services)
{
   services.AddOptions();
   services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
}
Run Code Online (Sandbox Code Playgroud)

应用设置.cs

注意:我还有一些其他设置,以便将它们全部放在 AppSettings POCO 中。

public class AppSettings
{
    public Application Application { get; set; }
}

public class Application
{
    public string Name { get; set; }
    public string Version { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

用法 (_layout.cshtml)

注入IOptions<AppSettings>查看。如果您愿意,也可以将其注入控制器。

@inject IOptions<AppSettings> AppSettings

<footer class="main-footer">
   @AppSettings.Value.Application.Version
   @AppSettings.Value.Application.Name</strong>
</footer>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明