繁体   English   中英

在启动时使用 static 参数设置配置部分,而不是 .net 核心中的 json 文件

[英]Set configuration part in startup with static parameters not json file in .net core

我的测试解决方案中有这行代码。

我想在我的测试代码中配置 ravenoption。

public IHost host = null;
public IDocumentStore documentStore = null;
public TestHostBuilder()
{
    ConfigureServer(new TestServerOptions() {FrameworkVersion = null});
    documentStore = GetDocumentStore();
    Environment.SetEnvironmentVariable("TEST_ENV", "on");
    var hostBuilder = easy.api.Program.CreateHostBuilder(new string[0])
.ConfigureWebHost(webHostBuilder =>
{
    webHostBuilder.UseTestServer();
}).ConfigureAppConfiguration(config =>
{
   config.Configure<domain.Environments.RavenOptions>(new domain.Environments.RavenOptions() {PublicUrl=documentStore.Urls.ToString() });


})
.ConfigureServices(services =>
{

   services.AddScoped<ICurrentUserService, InitRequest>();
   services.AddScoped<ICacheStorage>(provider =>
   {
       return new Mock<ICacheStorage>().Object;
   });
   services.AddRavenDbAsyncSession(GetDocumentStore(new GetDocumentStoreOptions()));
   services.AddTransient<IAsyncDocumentSession>((c) =>
    {
        return documentStore.OpenAsyncSession();
    });

});

    host = hostBuilder.Start();

}

所以在这一行

config.Configure<domain.Environments.RavenOptions>(new domain.Environments.RavenOptions() {PublicUrl=documentStore.Urls.ToString() });

我收到此错误:

严重性代码说明项目文件行抑制 State
错误 CS1929 'IConfigurationBuilder' 不包含 'Configure' 的定义和最佳扩展方法重载

最后我创建了一个 Ioption object 并将其注入应用程序:

.ConfigureServices(services =>
        {
            domain.Environments.RavenOptions appSettings = new domain.Environments.RavenOptions()
            {
                PublicDbName = documentStore.Database,
                CertificateDirectory="",
                IsHttps=false,
                PublicUrl=documentStore.Identifier.Split("(").First(),
                TseDbName=documentStore.Database,
                ShardUrls=Enumerable.Repeat(documentStore.Identifier.Split("(").First(), 4).ToArray()
            };
            IOptions<domain.Environments.RavenOptions> options = Options.Create(appSettings);
                   services.AddScoped<IOptions<domain.Environments.RavenOptions>>((p) =>
            {
                return options;
            });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM