重定向到静态文件 asp.net 核心

Redirect to Static file asp.net core

我正在开发一个在 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 相同,您不能重定向到同一图像 -- 这将是一个不定式重定向循环。

您有两个选择:

  1. 对图像使用不同的 URL,然后您可以 return 重定向对图像的响应。
  2. 如果您需要保持图像 URL 与处理程序相同,那么您可以 return 使用 image/jpeg 等 mime header 的图像流响应。无需重定向。

让我知道以上任何选项是否适合您。

更新。

这是 #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() 方法。
  • Return 重定向响应与实际图像的路径。图像 URL 必须不同于映射的处理程序 URL。