Я пытаюсь выполнить некоторые JavaScript из встроенных ресурсов в библиотеке классов. Мне удалось узнать о IFileProvider
и создать мою собственную, которая сейчас хорошо работает. Тем не менее, проблема, которую я имею сейчас, заключается в том, что физические статические файлы (от wwwroot) больше не найдены.Ядро ASP.NET: пользовательский IFileProvider предотвращает работу стандартного IFileProvider
У меня есть следующий в моем Startup.cs
файле:
app.UseStaticFiles(
new StaticFileOptions()
{
// Override file provider to allow embedded resources
FileProvider = new CompositeFileProvider(
HostingEnvironment.ContentRootFileProvider,
new EmbeddedScriptFileProvider()),
//etc
});
Я предположил бы, используя CompositeFileProvider
будет означать, что, если файл не найден в одном из поставщиков файлов, то он будет пытаться другим. Я также предполагаю, что поставщик файлов по умолчанию - тот, который я назвал HostingEnvironment.ContentRootFileProvider
. Это неверно?
Единственное, что я могу придумать, это то, что проблема возникает из самого моего провайдера в методе GetFileInfo()
. Определение которого заключается в следующем:
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);
}
Может быть, что возвращение NotFoundFileInfo(subpath)
вызывает мои проблемы физической CSS, JS и другие статические файлы? Если да, то что я должен здесь возвращать, чтобы система могла использовать другой поставщик файлов?