Базовый URL ASP.NET в конфигурационном файле - PullRequest
1 голос
/ 13 июня 2019

В конфигурационном файле у меня есть

  "HRServices": {
    "CarService": "https://stackoverflow.com/Cars/...",
    "EmployeesService": "https://stackoverflow.com/Employees/...",
    "FinanceService": "https://stackoverflow.com/Finance/...",
    ....
  }

Можно ли указать базовый URL для всех этих адресов?

Чтобы получить что-то вроде

  "baseUrl":"https://stackoverflow.com",
  "HRServices": {
    "CarService": "baseUrl/Cars/...",
    "EmployeesService": "baseUrl/Employees/...",
    "FinanceService": "baseUrl/Finance/...",
    ....
  }

Обновление:

В контроллере используется:

private readonly IConfiguration _configuration;

public HomeController(IConfiguration configuration)
{
    _configuration = configuration;
}

[HttpGet]
public PartialViewResult Index()
{
    string url = _configuration["HRServices:EmployeesService"];
    ...
}


using System.Collections.Generic;

namespace Microsoft.Extensions.Configuration
{
    //
    // Summary:
    //     Represents the root of an Microsoft.Extensions.Configuration.IConfiguration hierarchy.
    public interface IConfigurationRoot : IConfiguration
    {
        //
        // Summary:
        //     The Microsoft.Extensions.Configuration.IConfigurationProviders for this configuration.
        IEnumerable<IConfigurationProvider> Providers { get; }

        //
        // Summary:
        //     Force the configuration values to be reloaded from the underlying Microsoft.Extensions.Configuration.IConfigurationProviders.
        void Reload();
    }
}

1 Ответ

1 голос
/ 13 июня 2019

Нет ничего, что сделает это за вас автоматически, но вы можете вручную зарегистрировать свой строго типизированный конфиг и сделать это самостоятельно:

services.AddScoped(p =>
{
    var config = p.GetRequiredService<IConfiguration>();
    var baseUrl = config["baseUrl"]
    return new HRServicesConfig
    {
        CarService = baseUrl + config["HRServices:CarService"],
        EmployeeService = baseUrl + config["HRServices:EmployeeService"],
        FinanceService = baseUrl + config["HRServices:FinanceService"]
    }
});

Единственная проблема в том, что вы больше не будете использовать IOptions, поэтому вы будете вводить HRServicesConfig напрямую, а не что-то вроде IOptions<HRServicesConfig>. Некоторые, возможно, считают, что это особенность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...