Page 1 of 1

Der Dienst für den Typ „Swashbuckle.AspNetCore.Swagger.ISwaggerProvider“ kann nur bei Verwendung von Unity Dependency In

Posted: 06 Jan 2025, 02:54
by Anonymous
Ich arbeite an einer ASP.NET Core-Anwendung und integriere Swagger mit

Code: Select all

Swashbuckle.AspNetCore
. Mein Projekt verwendet Unity als Abhängigkeitsinjektionscontainer (DI) anstelle des standardmäßigen ASP.NET Core DI. Beim Versuch, die Swagger-Benutzeroberfläche zu laden oder API-Aufrufe durchzuführen, tritt jedoch der folgende Fehler auf:

Code: Select all

Unable to resolve service for type 'Swashbuckle.AspNetCore.Swagger.ISwaggerProvider' while attempting to Invoke middleware 'Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware'.
  • Konfigurierte Unity in Program.cs:

Code: Select all

var builder = WebApplication.CreateBuilder(args);
var unityContainer = new UnityContainer();

builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddControllers().AddControllersAsServices();
builder.Services.AddControllersWithViews(); // Registers MVC services, including Razor         view engine

UnityConfig.RegisterTypes(unityContainer); //Registers services like below for example
//container.RegisterType();

builder.Host.UseUnityServiceProvider(unityContainer); //If this line removed, it Swagger loads

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.MapControllers(); // Enable routing to controllers

app.Run();


Problem
Trotz ISwaggerProvider vorhanden erfolgreich durch Unity gelöst, löst die SwaggerMiddleware bei der Verarbeitung von Anfragen den oben genannten Fehler aus.
Umgebung:
  • .NET 8.0
  • Swashbuckle.AspNetCore v7.2.0
  • Unity v5.11.10
  • Unity.Microsoft.DependencyInjection v5.11.5
Lokales Ausführen mit IIS Express.
Fragen:
  • Gibt es bei Swashbuckle.AspNetCore bekannte Probleme bei der Verwendung mit Unity als DI-Container?
  • Gibt es bestimmte Konfigurationen oder Einschränkungen bei der Integration mit Unity? Die Middleware-Pipeline von ASP.NET Core?
  • Wie kann ich sicherstellen, dass ISwaggerProvider von SwaggerMiddleware bei Verwendung von Unity korrekt aufgelöst wird?
Jede Hilfe oder Hinweise zur Lösung dieses Problems wäre sehr dankbar!