重定向到静态文件asp.net核心
问题描述:
我正在开发包含wwwroot文件夹下的图像的应用程序。当图像被调用(something.com/Images/img.png)时,我需要一个代码才能运行,完成后需要显示图像。执行代码后是否可以将管道重定向到静态文件(图像)。 我的代码看起来是这样的:重定向到静态文件asp.net核心
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与处理程序相同,那么您可以使用
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的中间件,如果它符合一些条件,然后运行一些代码,然后让请求传递给其他中间件? – JohanP