File Providers
This topic describes how to use file provider to map files to virtual paths in the site.
Optimizely products use File Providers to map files to virtual paths in the site. Protected modules use file providers so you can have a single physical location for the modules even though the virtual path on the site is configurable.
Configuring a File Provider
In addition to ASP.NET Core:s two different file providers ContentRootFileProvider and WebRootFileProvider that are available on IWebHostFileProvider CMS also registers one instance of a ICompositeFileProvider that acts as a facade over the built-in provider but also support registration of additional providers. You can register custom file providers to the composite file provider through CompositeFileProviderOptions. The composite file provider is used for example to resolve resources from shell modules. The composite file provider is registered in the DI container.
MappingPhysicalFileProvider
The MappingPhysicalFileProvider is used to map in physical files that are not located directly under the application root. The following example shows a registration of a MappingPhysicalFileProvider:
serviceCollection.Configure<CompositeFileProviderOptions>(c =>
{
c.BasePathFileProviders.Add(new MappingPhysicalFileProvider("/SomeVirtualPath", string.Empty,
Path.Combine(webHostEnvironment.ContentRootPath, @"SomePhysicalFolder")));
});
ZipArchiveFileProvider
CMS also contains a zip archive file provider that you can use if files are stored in a zip archive.
Shell modules
When shell modules are registered, a file provider is also automatically registered for the shell module. If the resources are packaged in a zip archive, an instance of ZipArchiveFileProvider is registered.
Updated 6 months ago