如何在任何类中使用访问我的密钥.NET 6



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

程序.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": "*"
}

安装柚子后。EntityFrameworkCore。MySql

program.cs文件中

builder.Services.AddControllersWithViews();

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

并从ItunesSearchDBEntities类中删除OnConfiguring方法

最新更新