это мой первый вопрос, поэтому не судите строго Я пытаюсь понять, как Middleware получает параметры из Configure метода в классе Startup . Вот код класса Middleware :
public class LocationMiddleware
{
private RequestDelegate next;
private MessageOptions options;
public LocationMiddleware(RequestDelegate nextDelegate,IOptions<MessageOptions> opts)
{
next = nextDelegate;
options = opts.Value;
}
public async Task Invoke(HttpContext context)
{
if (context.Request.Path=="/location")
{
await context.Response.WriteAsync($"{options.CityName}, {options.CountryName}");
}
else
{
await next(context);
}
}
}
Конструктор этого класса принимает 2 параметра RequestDelegate
и IOptions<MessageOptions>
Но при вызове метода UseMiddleware
в Startup
классе в этой строке не отправляются никакие параметры app.UseMiddleware<LocationMiddleware>();
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMiddleware<LocationMiddleware>();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Hello World!");
});
});
}
Итак, мой вопрос в том, как класс промежуточного программного обеспечения получает эти параметры?