我目前在 .NET Core (以及任何与 .NET 相关的东西)非常陌生。我正在 Pluralsight 上在线学习一门课程,到目前为止,我们已经生成了以下方法:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IGreeter greeter, ILogger<Startup> logger)
{
app.Use(next =>
{
return async context =>
{
logger.LogInformation("Request Incoming");
if (context.Request.Path.StartsWithSegments("/my"))
{
logger.LogInformation("Inside first Middleware!");
await context.Response.WriteAsync("Inside first Middleware");
}
else
{
logger.LogInformation("Request going to next Middleware");
//await next(context);
}
};
});
app.UseWelcomePage(new WelcomePageOptions
{
Path = "/wp"
});
app.Run(async (context) =>
{
var greeting = greeter.getMessageOfTheDay();
await context.Response.WriteAsync(greeting);
});
}
我对管道在某些情况下的工作方式有些困惑。
例如,如果我要删除第一个中间件 app.use 和 app.UseWelcomePage 成为第一个中间件。如果路径不满足,app.usewelcomepage 将如何调用下一个中间件 app.run?我以为我们总是需要 await.next() ?在我的情况下 app.run 将执行。
对于我的第二个问题,使用下面的代码,当我在第一个中间件中注释掉 await.next() 时,无论我运行 IISExpress,浏览器正在加载并考虑要做什么。在标题选项卡中,会简要显示来自 UseWelcomePage 的标题。如果没有链接,这怎么可能?