首页 > 解决方案 > 更改 WebRootFileProvider 是否是将自定义 IFileProvider 应用于 asp-append-version 的正确方法?有什么副作用吗?

问题描述

我希望能够提供具有自定义文件路径的文件(js/v1/foo.js可以映射到真实文件wwwroot/js/foo.js)。我VersionedFileProvider已经创建了可以映射的。我这样设置:

        app.UseStaticFiles(new StaticFileOptions()
        {
            FileProvider = new CompositeFileProvider(
                new VersionedFileProvider(env.WebRootPath),
                env.WebRootFileProvider),
        });

所有文件都在工作。但是,如果我使用该自定义路径,asp-append-version则不起作用。当我检查源代码时,他们正在WebRootFileProvider使用而不是我设置的那个UseStaticFiles

幸运的是,env.WebRootFileProvider它是可设置的,所以我可以通过以下方式解决问题:

        env.WebRootFileProvider = new CompositeFileProvider(
            new VersionedFileProvider(env.WebRootPath),
            env.WebRootFileProvider);
        app.UseStaticFiles();

但是,我不得不承认我不知道还有什么正在使用WebRootFileProvider以及可能会发生什么副作用。请帮助我确认这是解决我的问题的正确方法。

标签: fileasp.net-corestatic-filesasp.net-core-staticfile

解决方案


从开发团队确认我在问题中建议的方式推荐

    env.WebRootFileProvider = new CompositeFileProvider(
        new VersionedFileProvider(env.WebRootPath),
        env.WebRootFileProvider);
    app.UseStaticFiles();

推荐阅读