我正在开发一个在wwwroot文件夹下包含图像的应用程序。当图像被调用(something.com/Images/img.png(时,我需要运行一个代码,完成后我需要图像出现。执行代码后是否可以将管道线重定向到静态文件(图像(。我的代码如下所示:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Map("/images", images =>
{
images.Map("/img.png=", img =>
{
HandleImages(app);
});
});
}
private void HandleImages(IApplicationBuilder app)
{
app.Run(async (context) =>
{
//do something
//redirect to The Image
});
}
我尝试使用图像出现app.UseStaticFiles();
但代码未执行。
由于图像URL相同,因此您无法重定向到同一图像 - 这将是一个不定式重定向循环。
您有两种选择:
- 对图像
- 使用不同的 URL,然后您可以返回对图像的重定向响应。
- 如果需要使图像 URL 与处理程序相同,则可以返回带有
image/jpeg
等 mime 标头的图像流响应。无需重定向。
让我知道上述任何选项是否适合您。
更新。
下面是 #1 的示例 - 使用管道重定向到具有不同 URL 的图像。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// Make sure static files serving enabled
app.UseStaticFiles();
app.Map("/images", images =>
{
images.Map("/img.png", img =>
{
HandleImages(img);
});
});
}
private void HandleImages(IApplicationBuilder appBuilder)
{
appBuilder.Run((context) =>
{
//do something
// ..
//redirect to The Image
context.Response.Redirect("/images/another.jpg");
return Task.FromResult(0);
});
}
总结:
- 启用
app.UseStaticFiles();
。 - 将
img
传递到HandleImages()
方法中。 - 返回带有实际图像路径的重定向响应。图像 URL 必须不同于映射的处理程序 URL。