【问题标题】:How to access configuration in configureServices如何访问 configureServices 中的配置
【发布时间】:2018-06-12 06:54:59
【问题描述】:

您将如何从 Giraffe-FSharp 中的 configureServices 方法内部访问配置?

这是由SAFE template 通过dotnet new SAFE -lang F# --server giraffe 创建的 Giraffe 设置的节选:

let configureServices (services : IServiceCollection) =
    services.AddCors()                  |> ignore
    services.AddGiraffe()               |> ignore
    // Want to access configuration here.



[<EntryPoint>]
let main _ =
    let contentRoot = Directory.GetCurrentDirectory()
    let webRoot     = Path.Combine(contentRoot, "WebRoot")

    WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(contentRoot)
        .UseIISIntegration()
        .UseWebRoot(webRoot)
        .Configure(Action<IApplicationBuilder> configureApp)
        .ConfigureAppConfiguration(Action<WebHostBuilderContext, IConfigurationBuilder> configureAppConfig)
        .ConfigureServices(configureServices)
        .ConfigureLogging(configureLogging)
        .Build()
        .Run()
    0

【问题讨论】:

    标签: f# f#-giraffe


    【解决方案1】:

    从服务集合中获取服务提供者,然后使用它来获取配置:

    let serviceProvider = services.BuildServiceProvider()
    let config = serviceProvider.GetService<IConfiguration>()
    

    【讨论】:

    • 工作愉快! :)
    • 它是否适用于可重新加载的配置?因为您在 ConfigureServices 中生成的 IConfiguration 实例将与最终的不同
    • @atomaras 它将是当时的配置状态。如果您需要知道它如何处理您的特定案例,我建议您尝试一些测试案例。
    • 对于 C#,这帮助我弄清楚了如何在不利用依赖注入和在 Program.cs 中执行所有配置并取消 Startup.cs 时从 ConfigureServices 内部访问 IConfiguration。这是我在 .ConfigureServices(...) 调用中添加的代码行:IConfiguration configuration = services.BuildServiceProvider().GetService&lt;IConfiguration&gt;();
    猜你喜欢
    • 2020-11-06
    • 1970-01-01
    • 2019-12-30
    • 2019-10-25
    • 1970-01-01
    • 2020-08-30
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多