提问人:atoms 提问时间:2/13/2023 最后编辑:atoms 更新时间:2/14/2023 访问量:64
Piranha CMS 中间件,用于捕获对 /uploads 的请求
Piranha CMS middleware to capture requests to /uploads
问:
当对 image|file 发出请求时,它不会到达我的中间件。
我可以看到,当它被调用时,它会添加UseCms
PiranhaStartupFilter
serviceBuilder.Services.AddTransient<IStartupFilter, PiranhaStartupFilter>();
这将添加到 ApplicationBuilder。UseStaticFiles()
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return builder =>
{
builder
.UseSecurityMiddleware()
.UseStaticFiles()
.UseMiddleware<RoutingMiddleware>()
.UseMiddleware<SitemapMiddleware>();
next(builder);
};
}
如何覆盖此功能,以便为请求调用我的中间件?
我希望在我的中间件的方法中接收到一个调用,注册如下:/uploads/foo.jpg
InvokeAsync
app.UsePiranha(options =>
{
options.Builder.CustomImageTools();
});
目前,只有文件和网站图标请求到达我的中间件中的 InvokeAsync 方法。
答:
1赞
Håkan Edling
2/14/2023
#1
由于 asp.net 中的中间件是按照它们添加到管道中的顺序执行的,因此在对 Piranha 进行任何调用之前添加拦截器应该就足够了。
您可以通过在 in 的调用上方添加服务来添加中间件。UseCms()
startup.cs
services.AddPiranha(options =>
{
options.CustomImageFilter();
options.UseCms();
}
public class CustomImageFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return app =>
{
app.UseWhen(
context => some_condition,
appbuilder => appbuilder.CustomImageTools()
);
// Call the next configure method
next(app);
};
}
}
评论
app.UseMiddleware<UploadsMiddleware>();