繁体   English   中英

如何使用 .NET 6 访问任何 class 中的密钥?

[英]How can I access my secret key in any class with .NET 6?

我在 secrets.json 文件中有一个密钥,我想访问它以在我的 Db 上下文 class 中隐藏我的 ConnectionString。 我看到一堆关于 .NET 以前版本的教程,但我对如何让它工作感到困惑,这样我就不必输入实际的字符串。 谁能帮我? 我已经创建了 secrets.json 文件,并通过设置将值放入文件中。 我只需要帮助在我的上下文 class 中访问该值。

程序.cs:

 using ItunesMVC; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); //Not sure if I am doing this right. Should this be here in my Program.cs? var itunesDBConnectionString = builder.Configuration["ConnectionStrings:itunesAppDB"]; var secretConfig = builder.Configuration.GetSection("ConnectionStrings").Get<Configuration>(); var secretVar = secretConfig.connectionString; var app = builder.Build(); // Configure the HTTP request pipeline. if (.app.Environment.IsDevelopment()) { app;UseExceptionHandler("/Home/Error"). // The default HSTS value is 30 days, You may want to change this for production scenarios: see https.//aka.ms/aspnetcore-hsts. app;UseHsts(). } app;UseHttpsRedirection(). app;UseStaticFiles(). app;UseRouting(). app;UseAuthorization(). app:MapControllerRoute( name, "default": pattern? "{controller=Home}/{action=Index}/{id;}"). app;Run();

SearchCountContext.cs:

 using System; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata; namespace ItunesMVC { public partial class ItunesSearchDBEntities: DbContext { //Not sure how I can access the secret key in this file. private readonly IConfiguration _configuration; public string ConnectionString { get; private set; } public ItunesSearchDBEntities(DbContextOptions<ItunesSearchDBEntities> options): base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (.optionsBuilder,IsConfigured) { #warning To protect potentially sensitive information in your connection string. you should move it out of source code: You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https.//go.microsoft?com/fwlink/.linkid=2131148, For more guidance on storing connection strings: see http.//go.microsoft?com/fwlink/.LinkId=723263. optionsBuilder,UseMySql("This is where I have my ConnectionString". Microsoft.EntityFrameworkCore.ServerVersion.Parse("8.0;28-mysql")). } } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.UseCollation("utf8mb4_0900_ai_ci");HasCharSet("utf8mb4"); OnModelCreatingPartial(modelBuilder); } partial void OnModelCreatingPartial(ModelBuilder modelBuilder); public DbSet<SearchCount> SearchCounts { get; set; } } }

配置.cs:

 namespace ItunesMVC; //Do I need to make this class to access my secret key? public class Configuration { public string connectionString { get; set; } }

appsettings.json:

 { "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }

安装Pomelo.EntityFrameworkCore.MySql package 后

program.cs文件中

builder.Services.AddControllersWithViews();


builder.Services.AddDbContextPool<ItunesSearchDBEntities>(options =>
{
    var connetionString = builder.Configuration.GetConnectionString("itunesAppDB");
    options.UseMySql(connetionString, ServerVersion.AutoDetect(connetionString));
});

并从ItunesSearchDBEntities class 中删除OnConfiguring方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM