簡體   English   中英

在 ASP.NET 應用程序中使用擴展 - .NET 6

[英]Using Extension in ASP.NET application - .NET 6

我試圖讓 NEST 在 ASP.NET 應用程序中工作。 我正在遵循指南https://blexin.com/en/blog-en/how-to-integrate-elasticsearch-in-asp-net-core/#highlighter_541789 我試圖弄清楚如何在構建器上正確調用AddElasticsearch 我嘗試了幾種方法,但不斷收到編譯器投訴。

Extensions.cs

public static class Extensions
{
    public static void AddElasticsearch(this IServiceCollection services, IConfiguration configuration)
    {
        var url = configuration["elasticsearch:url"];
        var defaultIndex = configuration["elasticsearch:index"];

        var settings = new ConnectionSettings(new Uri(url)).DefaultIndex(defaultIndex);

        AddDefaultMappings(settings);

        var client = new ElasticClient(settings);

        services.AddSingleton(client);

        CreateIndex<LegiscanModelBill>(client, defaultIndex);
    }

    private static void AddDefaultMappings(ConnectionSettings settings) => settings.DefaultMappingFor<LegiscanModelBill>(m => m);

    // private static void CreateIndex<T>(IElasticClient client, string indexName)
    // {
    //     var createIndexResponse = client.Indices.Create(indexName,
    //         index => index.Map<LegiscanModelBill>(x => x.AutoMap())
    //     );
    // }

    private static void CreateIndex<T>(ElasticClient client, string indexName) where T : class
    {
        client.Indices.Create($"{indexName}_{typeof(T).ToString}", i => i.Map<T>(m => m.AutoMap()));
    }
}

Program.cs

var builder = WebApplication.CreateBuilder(args);

builder.Services
    .AddElasticsearch(options => options.configuration)
    .AddGraphQLServer()
    .AddQueryType<Query>();


var app = builder.Build();

app.MapGraphQL();

app.Run();

compiler error

Cannot convert lambda expression to type 'IConfiguration' because it is not a delegate type 

而不是options => options.configuration這只是一個沒有意義的隨機猜測,使用builder.Configuration

老實說,我認為這種擁有main方法而不實際擁有 main 方法的新方法隱藏了太多,以至於它並沒有使它“更容易”,實際上它更難理解實際發生的事情。 因為這一切都是隱藏的。 無論如何,這就是你需要做的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM