Оказывается, я использовал неправильный метод для добавления промежуточного программного обеспечения.
Изменен для добавления промежуточного программного обеспечения в ApplicationBuilder и использования UseMiddleware <> (), который не может принимать параметры так, как я хотел.
Добавочный номер :
public static class IServiceCollectionExtension
{
public static IApplicationBuilder UseLCPathControl(this IApplicationBuilder services, string path)
{
return services.UseLCPathControl(o => o.AddPath(path));
}
public static IApplicationBuilder UseLCPathControl(this IApplicationBuilder builder, Action<MiddleConfig> options)
{
MiddleConfig opt = new MiddleConfig();
options.Invoke(opt);
return builder.UseMiddleware<Middle>(opt);
}
}
Средний :
public class Middle
{
private readonly RequestDelegate _next;
private readonly MiddleConfig _opt = new MiddleConfig();
public Middle(RequestDelegate next, MiddleConfig options)
{
_opt = options;
_next = next;
}
public async Task Invoke(HttpContext context)
{
await _next.Invoke(context);
}
}
MiddleConfig :
public class MiddleConfig
{
private readonly ICollection<string> _c;
public MiddleConfig()
{
_c = new Collection<string>();
}
public void AddPath(string path)
{
_c.Add(path);
}
public IEnumerable<string> Paths => _c;
}