【发布时间】:2020-04-15 03:47:03
【问题描述】:
我刚刚将我的 ASP.NET Core WebApi 项目从 .NET Core 2.2 升级到 3.1。
我已经修复了所有编译时错误,升级了我的 Nuget 包,现在我可以运行该应用了。
但是,当我在 IHostBuilder 上调用 Build() 时,出现以下异常:
InvalidOperationException:无法解析服务类型 'Microsoft.AspNetCore.Http.RequestDelegate' 尝试 激活“MyProject.Api.Middleware.ExceptionHandlerMiddleware”。
它所指的中间件是相当标准的。
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();
});
}
}
还值得一提的是Startup.cs 中的ConfigureServices() 方法被调用并且运行良好,但Configure() 永远不会运行。 Build() 方法总是在应用程序到达 Configure() 之前杀死它。
我的 Startup 的 Configure 方法签名如下所示:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
【问题讨论】:
-
你能分享你的 Startup.cs 吗?
标签: c# asp.net-core .net-core asp.net-core-3.1 scrutor