Ich versuche, einige JavaScript von eingebetteten Ressourcen in einer Klassenbibliothek zu dienen. Ich habe es geschafft, über die IFileProvider
herauszufinden und meine eigene erstellt, die jetzt gut funktioniert. Das Problem, das ich jetzt habe, ist jedoch, dass physische statische Dateien (von wwwroot) nicht mehr gefunden werden.ASP.NET Core: Benutzerdefinierte IFileProvider verhindert Standard IFileProvider funktioniert
Ich habe folgendes in meiner Startup.cs
Datei:
app.UseStaticFiles(
new StaticFileOptions()
{
// Override file provider to allow embedded resources
FileProvider = new CompositeFileProvider(
HostingEnvironment.ContentRootFileProvider,
new EmbeddedScriptFileProvider()),
//etc
});
ich die CompositeFileProvider
verwendet haben angenommen hätte würde bedeuten, dass, wenn die Datei nicht in einem der Dateianbieter gefunden wird, dann wird es die anderen versuchen. Ich gehe auch davon aus, dass der Standard-Dateianbieter der ist, den ich als HostingEnvironment.ContentRootFileProvider
angegeben habe. Ist das falsch?
Die einzige andere Sache, die ich denken kann ist, dass das Problem von innerhalb meines Providers selbst in der GetFileInfo()
Methode kommt. Die Definition, welche sich wie folgt:
public IFileInfo GetFileInfo(string subpath)
{
if (string.IsNullOrEmpty(subpath))
{
return new NotFoundFileInfo(subpath);
}
if (subpath.StartsWith("/", StringComparison.Ordinal))
{
subpath = subpath.Substring(1);
}
var metadata = EmbeddedScripts.FindEmbeddedResource(subpath);
if (metadata == null)
{
return new NotFoundFileInfo(subpath);
}
return new EmbeddedResourceFileInfo(metadata);
}
Könnte es, dass NotFoundFileInfo(subpath)
zurückkehren, um meine Probleme für die körperliche CSS verursacht, js und andere statische Dateien? Wenn ja, was soll ich hier zurückgeben, damit das System den anderen Dateianbieter verwendet?