【问题标题】:ASP.NET 5 (vNext) and Configs for dnx451 dependenciesASP.NET 5 (vNext) 和 dnx451 依赖项的配置
【发布时间】:2016-04-09 06:26:30
【问题描述】:

我对 ASP.NET vNext 还是很陌生,并且在我的项目中为依赖配置而苦苦挣扎。 我在 project.json 的 dnx451 部分定义了一些依赖项。他们通常通过 ConfigurationManager 从旧式 app.config 文件加载他们的设置,例如

<appSettings>
    <add key="myConfigKey" value="myConfigValue" />
</appSettings>

string value = System.Configuration.ConfigurationManager.AppSettings["myConfigKey"];

我了解如何在基本 ASP.NET 5 中配置应用程序,如下所述:ASP.NET 5 (vNext) - Configuration

所以我的问题是:有没有办法让我的依赖程序集知道它们的配置值?

最好的问候

【问题讨论】:

  • 查看the place 的文档。您对“让我的依赖程序集知道它们的配置值的方法”的意思并不完全清楚。你决定你的应用程序在类库中需要访问appconfig.json 的某些部分吗?你有什么接口呢?能不能只把全局配置的部分转发到类库?
  • ASP.NET 5 文档it is recommended that you only instantiate an instance of Configuration in your application’s Startup class,但您可以使用new ConfigurationBuilder().AddJsonFile("appsettings.json").Build().GetSection("PathToMyConfigKey")
  • 感谢您的回复。实际上,我对这些类库和加载它们的配置没有影响,如上所述。它们被构建为可以直接访问 app.config 并从那里获取它们的 appSettings。我只需要知道是否有办法加载这些设置。
  • 对不起,我还是没完全理解你的问题。如果您删除了dnxcore50 并在您的项目中仅使用dnx451,那么它可以使用您所知道的相同的.NET Framework 4.5.1。如果某些组件直接访问某个 XML 文件并直接读取某些 myConfigKey 则它将获取该值。如果我们只将“一些遗留的依赖程序集”写成“黑匣子”,就很难说些什么。你试过用它吗?你有什么问题吗?没有人可以肯定地说某些未知的旧代码在变化的环境中可以正常工作。
  • 但是我们越来越近了;)。我确实删除了 dnxcore50。这是我到目前为止不明白的内容:我也可以将 app.config 添加到我的项目中吗?实际上,我从未尝试将 app.config 添加到 ASP.NET 5 项目中。

标签: asp.net .net .net-core asp.net-core


【解决方案1】:

您应该通过构造函数或属性注入将值传递到程序集中。 AutoFac 之类的 DI 容器将帮助您轻松完成此操作,但您无需使用穷人的 DI 即可完成此操作。

public class SomeClassInAssembly
{
    private readonly string _configValue;

    public SomeClassInAssembly(string configValue)
    {
        _configValue = configValue;
    }

    // Some method that now has access to your variable

}

然后在调用应用程序中以通常的方式从配置中检索并传递它

【讨论】:

  • 感谢您的回答。好吧,由于我无法访问类库,并且它们以上述方式直接从 app.config 加载设置,因此我无法将配置注入到类中。
【解决方案2】:

恐怕直接使用ConfigurationManager 的库在 ASP.NET 5 下无法运行。您需要更新库或让他们更新它以抽象配置部分,以便您可以通过编程方式传递配置。

【讨论】:

    【解决方案3】:

    这里给出了实际答案:web.config in ASP.NET 5 MVC 6

    就像奥列格在上条评论中所说的那样。

    我可以在我的 DLL 旁边放置一个 app.config,并可以像这样配置我的第三方库。

    还是谢谢你的回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 2015-01-13
      • 2014-07-11
      • 2015-07-27
      • 2015-10-08
      • 1970-01-01
      相关资源
      最近更新 更多