我在NET Core2.0 App中有以下类.
// required when local database does not exist or was deleted
public class ToDoContextFactory : IDesignTimeDbContextFactory<AppContext>
{
public AppContext CreateDbContext(string[] args)
{
var builder = new DbContextOptionsBuilder<AppContext>();
builder.UseSqlServer("Server=localhost;Database=DbName;Trusted_Connection=True;MultipleActiveResultSets=true");
return new AppContext(builder.Options);
}
}
Run Code Online (Sandbox Code Playgroud)
当Database不存在时,在Core 2.0中需要进行迁移,并且必须在运行update-database时创建.
升级到ASP.NET Core 2.0后无法创建迁移
我想在2个地方(这里和appsettings.json)没有ConnectionString,但只在.json,所以我试图更换
"Server=localhost;Database=DbName;Trusted_Connection=True;MultipleActiveResultSets=true"
Run Code Online (Sandbox Code Playgroud)
同
ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我得到空值.
更新1:
请注意,在Core 2中明确添加.json是不必要的,所以问题不在于文件.
https://andrewlock.net/exploring-program-and-startup-in-asp-net-core-2-preview1-2/
更新2:
此外,我已经使用Configuration从.json向Context发送ConnectionString:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); …Run Code Online (Sandbox Code Playgroud) 我想知道是否有一种方法可以在不使用依赖注入的情况下访问Configuration(Microsoft.Extensions.Configuration).我看到的只有一些例子是通过构造函数注入(使用IOptions或直接注入Configuration).
我的困境是我有一个实用类 - 而不是一个服务 - 它有静态方法来动态地做事.在一些静态方法中,我想动态地从appsettings.json中检索几个属性.由于这是一个严格的实用程序类,我不希望必须将此类注入需要使用该实用程序中的一个或两个方法的其他每个类.
关于如何在没有某种依赖注入的情况下访问appsettings.json的属性的任何想法.
仅供参考:使用c#和.net核心1.1
我曾经为此指定了应用程序基本路径ConfigurationBuilder:
public Startup(IApplicationEnvironment appEnv)
{
var configurationBuilder = new ConfigurationBuilder(appEnv.ApplicationBasePath)
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Configuration = configurationBuilder.Build();
}
Run Code Online (Sandbox Code Playgroud)
但是,从beta8开始,构造函数ConfigurationBuilder不再采用应用程序基本路径参数,现在抛出异常.
如何指定基本路径?
按照此示例,我尝试使用Microsoft.Extensions.Configuration API 中的IConfiguration接口检索并保存启动应用程序值。但是,我找不到将这些值更改为设置 JSON 文件的方法。
作为示例,请考虑以下appSettings.json配置文件:
"Setting":
{
"Startup":
{
"IsFirstStart": true
}
}
Run Code Online (Sandbox Code Playgroud)
A 负责提取的关联类:
public class AppHandler
{
#region fields
// MS heper contains configuration parameters from JSON file
private IConfiguration _appConfiguration = null;
// MS config builder
private IConfigurationBuilder _appBuilder = null;
// Is it software first use
private bool _isFirstStart;
#endregion fields
#region Constructor
private AppHandler()
{
_appBuilder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.dev.json", optional: …Run Code Online (Sandbox Code Playgroud) 我想问一下如何创建 ASP.NET Core 配置的实例,这与我在知道该appsettings.json文件的Controller 的构造函数中需要它时创建的实例相同
喜欢 _config = ActivatorUtilities.CreateInstance<IConfiguration>(null);
System.InvalidOperationException: '找不到适合类型 'Microsoft.Extensions.Configuration.IConfiguration' 的构造函数。确保类型是具体的,并且为公共构造函数的所有参数注册了服务。
这是有道理的,因为它是接口,但是它在 Controller 的构造函数情况下是如何工作的呢?以及如何创建一个实例?
我正在使用 MS DI
谢谢