ASP.NET 核心 - 'Configuration.GetSection(string)' Swagger 实施中的错误

ASP.NET Core - 'Configuration.GetSection(string)' Error in Swagger Implementation

在我的 ASP.NET Core Web API-5.0 中,我正在实施 Swagger。我有这个:

using System.Configuration;

public static class SwaggerExtension
{
    public static IApplicationBuilder UseVersionedSwagger(this IApplicationBuilder app, IApiVersionDescriptionProvider provider)
    {
        // Enable middleware to serve generated Swagger as a JSON endpoint.
        app.UseSwagger();
        string virDir = Configuration.GetSection("VirtualDirectory").Value;
        app.UseSwaggerUI(
            options =>
            {
                // build a swagger endpoint for each discovered API version
                foreach (var description in provider.ApiVersionDescriptions)
                {
                    options.SwaggerEndpoint(virDir + "/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
                }
            });

        return app;
    }
}

我收到这个错误:

An object reference is required for the non-static field, method, or property 'Configuration.GetSection(string)'

并突出显示此行:

Configuration.GetSection

VirtualDirectory 在 appsettings.json

中被引用

如何解决这个问题?

谢谢

方法Configuration.GetSection return IConfigurationSection 类型的对象如果我没记错的话。而你试图将它存储在一个字符串对象中,这是不可能的。

尝试这样做:

var virDir = Configuration.GetSection("VirtualDirectory").Value;

如果有效,您可以在将鼠标悬停在“GetSection”方法上检查 return 确切地确定了哪个对象类型,然后将“var”更改为正确的类型: hover a method for check the returned type

此致。

变化:

string virDir = Configuration.GetSection("VirtualDirectory").Value;

类似于:

string virDir = app.ApplicationServices.GetRequiredService<IConfiguration>().GetSection("VirtualDirectory").Value;

Configuration 没有任何意义,这就是您收到错误的原因。您需要传递一个 IConfiguration 实例,或者像我一样从 servicecontainer 中获取它。

您可能还想添加 exta null/empty 字符串检查以确保您的配置正确。