我刚刚将我的 ASP.NET Core WebApi 项目从 .NET Core 2.2升级到3.1。
我已经修复了所有编译时错误,升级了我的 Nuget 包,现在我可以运行该应用程序了。
但是,当我调用Build()myIHostBuilder时,出现以下异常:
InvalidOperationException:尝试激活“MyProject.Api.Middleware.ExceptionHandlerMiddleware”时,无法解析“Microsoft.AspNetCore.Http.RequestDelegate”类型的服务。
它所指的中间件是相当标准的。
ExceptionHandlerMiddleware.cs
public class ExceptionHandlerMiddleware
{
private readonly RequestDelegate _next;
private readonly ILogger<ExceptionHandlerMiddleware> _logger;
public ExceptionHandlerMiddleware(RequestDelegate next, ILogger<ExceptionHandlerMiddleware> logger)
{
_logger = logger;
_next = next;
}
public async Task InvokeAsync(HttpContext httpContext)
{
// redacted
}
}
我的应用程序初始化的其余部分是相当标准的,从 2.2 到 3.1(2.2 正在工作)我没有太大变化。
我确实从 更改services.AddMvc()为services.AddControllers()。
程序.cs
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
private static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(builder =>
{
builder.UseSerilog().UseStartup<Startup>();
})
.ConfigureLogging((context, logging) =>
{
logging
.AddConfiguration(context.Configuration.GetSection("Logging"))
.AddConsole()
.AddDebug();
});
}
}
还值得一提的是,ConfigureServices()方法 inStartup.cs被调用并且运行良好,但Configure() 从未运行。该Build()方法总是在应用程序到达Configure().
我的 Startup 的Configure方法签名如下所示:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
