W ASP.NET Rdzenia istnieje wiele opcji, które można użyć, aby uzyskać dostęp do konfiguracji. Wygląda na to, że jeśli interesuje cię uzyskanie dostępu do usługi DefaultConnection
, lepiej jest zastosować podejście DI. Aby upewnić się, że można użyć iniekcji zależnej od konstruktora, musimy poprawnie skonfigurować kilka rzeczy w naszym Startup.cs
.
public IConfigurationRoot Configuration { get; }
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
Mamy teraz czytać naszą konfigurację JSON
z konstruktora i przypisać go do naszego Configuration
instancji. Teraz musimy skonfigurować go pod kątem wtrysku zależności - zacznijmy więc od stworzenia prostego zestawu znaków, który będzie utrzymywał ciąg połączenia.
public class ConnectionStrings
{
public string DefaultConnection { get; set; }
}
Jesteśmy realizacji "Options Pattern" gdzie wiążą się silnie wpisany klasy do konfiguracji segmentów. Teraz, w ConfigureServices
to zrobić:
public void ConfigureServices(IServiceCollection services)
{
// Setup options with DI
services.AddOptions();
// Configure ConnectionStrings using config
services.Configure<ConnectionStrings>(Configuration);
}
teraz, że to wszystko jest na swoim miejscu, może po prostu wymagać konstruktora klasy wziąć na IOptions<ConnectionStrings>
i będziemy mieć zmaterializowaną instancję klasy zawierającej wartości konfiguracyjne.
public class MyController : Controller
{
private readonly ConnectionStrings _connectionStrings;
public MyController(IOptions<ConnectionString> options)
{
_connectionStrings = options.Value;
}
public IActionResult Get()
{
// Use the _connectionStrings instance now...
using (var conn = new NpgsqlConnection(_connectionStrings.DefaultConnection))
{
conn.Open();
// Omitted for brevity...
}
}
}
Here jest oficjalnym dokumentem, który ja zawsze sugerują jako musi przeczytać.
Nie wiem nic o ustawieniach aplikacji json, ale myślę, że właśnie o to prosisz. http://stackoverflow.com/questions/31453495/how-to-read-appsettings-values-from-config-json-in-asp-net-vnext –