相关疑难解决方法(0)

从appsettings.json获取ConnectionString,而不是在.NET Core 2.0 App中进行硬编码

我在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)

connection-string appsettings asp.net-core

43
推荐指数
6
解决办法
10万
查看次数

无需依赖注入即可访问配置

我想知道是否有一种方法可以在不使用依赖注入的情况下访问Configuration(Microsoft.Extensions.Configuration).我看到的只有一些例子是通过构造函数注入(使用IOptions或直接注入Configuration).

我的困境是我有一个实用类 - 而不是一个服务 - 它有静态方法来动态地做事.在一些静态方法中,我想动态地从appsettings.json中检索几个属性.由于这是一个严格的实用程序类,我不希望必须将此类注入需要使用该实用程序中的一个或两个方法的其他每个类.

关于如何在没有某种依赖注入的情况下访问appsettings.json的属性的任何想法.

仅供参考:使用c#和.net核心1.1

c# .net-core

21
推荐指数
3
解决办法
6009
查看次数

在beta8中的ConfigurationBuilder中指定应用程序基本路径

我曾经为此指定了应用程序基本路径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不再采用应用程序基本路径参数,现在抛出异常.

如何指定基本路径?

c# configuration asp.net-core

12
推荐指数
1
解决办法
2773
查看次数

如何使用 Microsoft.Extensions.Configuration 将值保存到 JSON 配置文件中?

按照此示例,我尝试使用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)

.net c# json config .net-standard

5
推荐指数
1
解决办法
5135
查看次数

如何在本地创建 IConfiguration 的实例?

我想问一下如何创建 ASP.NET Core 配置的实例,这与我在知道该appsettings.json文件的Controller 的构造函数中需要它时创建的实例相同

喜欢 _config = ActivatorUtilities.CreateInstance<IConfiguration>(null);

System.InvalidOperationException: '找不到适合类型 'Microsoft.Extensions.Configuration.IConfiguration' 的构造函数。确保类型是具体的,并且为公共构造函数的所有参数注册了服务。

这是有道理的,因为它是接口,但是它在 Controller 的构造函数情况下是如何工作的呢?以及如何创建一个实例?

我正在使用 MS DI

谢谢

c# dependency-injection .net-core asp.net-core

4
推荐指数
1
解决办法
6055
查看次数