gpt4 book ai didi

asp.net-core-mvc - 为什么在asp.net core mvc中的EmbeddedFileProvider中找不到嵌入文件?

转载 作者:行者123 更新时间:2023-12-02 20:25:23 27 4
gpt4 key购买 nike

我目前正在尝试从外部程序集加载嵌入的 ViewComponent。

我已将其包含在我的项目文件中:

<EmbeddedResource Include="Views\**\*.cshtml" />

因此,当我检查实际程序集并运行 GetManifestResourceNames() 时,我看到该文件已嵌入。

然后我在 Startup.cs 的ConfigureService() 中调用此方法:

public static IMvcBuilder GetModules(this IMvcBuilder mvcBuilder)
{
var embeddedFileProviders = new List<EmbeddedFileProvider>
{
new EmbeddedFileProvider(Assembly.GetCallingAssembly())
};

mvcBuilder.ConfigureApplicationPartManager(apm =>
{
foreach (string modulePath in Directory.GetFiles(Configuration.Settings.Path, "*.Module.dll"))
{
var assembly = Assembly.LoadFrom(modulePath);
var startUpType = (from t in assembly.GetTypes()
where t.GetInterfaces().Contains(typeof(IModuleStartup))
select t).FirstOrDefault();

RegisterModuleServices(mvcBuilder, startUpType);

apm.ApplicationParts.Add(new AssemblyPart(assembly));

embeddedFileProviders.Add(new EmbeddedFileProvider(assembly));

Modules.Assemblies.Add(assembly);
}

var compositeFileProvider = new CompositeFileProvider(embeddedFileProviders);

mvcBuilder.Services.AddSingleton<IFileProvider>(compositeFileProvider);

});

return mvcBuilder;
}

我也没有使用

mvcBuilder.Services.Configure<RazorViewEngineOptions>(o =>
{
o.FileProviders.Add(compositeFileProvider);
});

因为这根本不起作用,甚至没有调用 o.FileProviders.Add(compositeFileProvider) 操作。

当我注入(inject) IFileProvider 时,会找到所有嵌入的文件提供程序,但当我运行 _fileProvider.GetDirectoryContents(""); 时,找不到任何文件;

有人知道为什么吗?

最佳答案

所以我明白了为什么它没有返回任何东西......看来我在创建新的EmbeddedFileProvider时没有设置baseNameSpace参数。傻呵呵。但有相当多的例子没有设置这个,但它起作用了。希望这可以帮助其他遇到此问题的人。

关于asp.net-core-mvc - 为什么在asp.net core mvc中的EmbeddedFileProvider中找不到嵌入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44288427/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com