ASP.NET Core - Swashbuckle - vyčtení verze z http kontextu v DocumentFilteru

zemla

Dobrý den,

při psaní swagger endpointu (generování dokumentace) jsme narazili na problém při přechodu z NET Framework na Net Core 3.x.

Úkolem je přidání custom atributu do swagger info sekce obsahující verzi - nechceme to dávat do info.version.

DokumentFilter, který se o vyčtení a přidání verze staral vypadal následovně.

Kód: [Vybrat]
    public class VersionInfoDocumentFilter : IDocumentFilter
    {
        private readonly Version _version =
            HttpContext.Current?.ApplicationInstance?.GetType().BaseType?.Assembly.GetName().Version;

        private const string PropertyName = "x-myCustomVersionAttribute";

        public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
        {
            if (swaggerDoc?.info?.vendorExtensions != null && _version != null)
            {
                swaggerDoc.info.vendorExtensions.Add(PropertyName,
                    $"{_version.Major}.{_version.Minor}.{_version.Build}");
            }
        }
    }

V Net Core již HttpContext.Current neexistuje.

Zjistil jsem, že místo toho zavedli HttpContextAccessor : IHttpContextAccessor, který má property HttpContext, není to statika.

Uvedený kód byl v modulu základním, který přepoužívaly ostatní mikroservisy.

Ale Version tam ani tak nevidím.

Máte někdo pls tucha?

Případně díky.


A obyčajné
Kód: [Vybrat]
Assembly.GetEntryAssembly().GetName().VersionNebude stačiť?