代码之家  ›  专栏  ›  技术社区  ›  Konrad Viltersten

为什么usestaticfiles和usedefaultfiles之间的顺序很重要?

  •  2
  • Konrad Viltersten  · 技术社区  · 6 年前

    我知道中间件的注册顺序 may matter . 然而,并不是因为这是必然的。

    我注意到了 使用默认文件() 需要先于 使用静态文件() (可以巧妙地通过 UseFileServer() )

    我不明白的是为什么。它们是如何碰撞的?!

    我在谷歌上搜索过这个问题,但没有动机 为什么? 在这种特殊情况下,顺序是重要的。只是它很重要…

    3 回复  |  直到 6 年前
        1
  •  4
  •   rickvdbosch    6 年前

    摘自 Static files in ASP.NET Core (在“送达默认文件”下,有一个 重要的 注释)。

    UseDefaultFiles 必须在之前调用 UseStaticFiles 提供默认文件。 使用故障文件 是一个实际上不为文件服务的URL重写器。通过启用静态文件中间件 使用文件 提供文件。

    基于此,首先设置URL重写器很重要( 使用故障文件 )在提供实际文件之前( 使用文件 )
    如果你不这样做, 使用文件 中间件将首先启动,但是对应用程序根目录的请求不会告诉中间件要提供哪个“文件”。当您确保重写首先到位时,对应用程序根目录的请求将被重写为(其中一个)默认文件的请求。

        2
  •  2
  •   DavidG    6 年前

    docs :

    UseDefaultFiles 必须在之前调用 UseStaticFiles 提供默认文件。 使用故障文件 是一个实际上不为文件服务的URL重写器。通过启用静态文件中间件 使用文件 提供文件。

    中间件的顺序很重要,这就是为什么,例如, 使用文件 必须先来 UseMvc 因为MVC引擎将处理所有请求。在这种情况下, 使用故障文件 只是重写URL并将其传递到 使用文件 要服务的中间件。

        3
  •  2
  •   Manoj Choudhari    6 年前

    使用默认文件() 应该总是在 使用静态文件()。

    这是因为usedefaultfiles重写了URL。使用静态文件只服务于URL。

    如果在URL重写之前提供文档,则可能无法获得默认文档。

    Refernece: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-2.2#serve-a-default-document

    推荐文章