ASP.NET Core 2.1从另一个项目提供静态文件

时间:2018-06-18 17:56:40

标签: c# asp.net-core asp.net-core-2.1

我正在尝试使用ASP.NET Core 2.1后端提供API和Angular Front-End。 Startup.cs位于项目MyApp.Api中。我希望从另一个项目MyApp.FrontEnd的wwwroot中提取我的静态文件。

我见过this post,它描述了以下方法

app.UseStaticFiles(new StaticFileOptions {
    FileProvider = new EmbeddedFileProvider(
        assembly: Assembly.Load(new AssemblyName("OpenIddict.Assets")),
        baseNamespace: "OpenIddict.Assets")
});

但是,当我尝试替换" OpenIddicts.Assets"使用我的项目名称,我收到以下错误:

  

FTL应用程序启动异常       System.IO.FileNotFoundException:无法加载文件或程序集       ' MyApp.FrontEnd,Culture = neutral,PublicKeyToken = null'。       该系统找不到指定的文件。       文件名:' MyApp.FrontEnd,Culture = neutral,PublicKeyToken = null'

上面链接的帖子中引用的GitHub存储库似乎已不复存在。我想我错过了一个相当明显的地方。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

MyApp.FrontEnd.dll必须存在于输出文件夹中。如果您发布主项目(引用了MyApp.FrontEnd),那么一切都会正常。

如果您可以从汇编中访问某些类型,则可以尝试使用Assembly.GetAssembly(type)代替Assembly.Load(...),即

app.UseStaticFiles(new StaticFileOptions {
    FileProvider = new EmbeddedFileProvider(
        assembly: Assembly.GetAssembly(typeof(SomeClassFromAssembly)),
        baseNamespace: "OpenIddict.Assets")
});