2017-02-09 171 views
1

我在Aurelia CLI设置的.NET Core中托管Aurelia应用程序。Aurelia .NET Core - 找不到本地文件

我在我的app.html文件中包含了使用require的Font-Awesome CSS文件。 一切都加载,因为它应该但当我尝试引用位​​于src/assets/icons/font-awesome文件夹中的字体真棒字体(我自己复制它们),我得到标准文件找不到控制台错误。

如果我将我的字体真棒字体移动到wwwwroot一切正常,图标出现在我的页面上。我的猜测是,因为我通过.NET Core(wwwroot)托管我的应用程序,所以我无法访问src文件夹下的静态文件?

结构:

enter image description here

控制台错误:

enter image description here

为什么会这样呢?我可以以某种方式解决这个问题,或者我是否被迫将我的Font-Awesome字体存储在wwwroot中?

下一次当我使用Aurelia CLI启动一个新的Aurelia项目时,如果我在wwwroot中安装了Aurelia应用程序,而不是根目录中的单独src文件夹,会更好吗?

+0

wwwroot的意思为“公共”文件夹为资产。只要将它们移动到那里,没有理由将某些东西放在'src'中,而不是需要编译或以某种方式构建的文件。更好的是从CDN加载它们。 –

回答

2

默认情况下,.NET Core Web主机提供来自wwwroot文件夹的静态文件。 没有为一个特殊的指令在Program.cs文件

public static void Main(string[] args) 
{ 
    var host = new WebHostBuilder() 
     .UseContentRoot(Directory.GetCurrentDirectory()) //serve static from web root (wwwroot) folder 
} 

,并在某处Startup.cs您已经启用静态文件中间件: app.UseStaticFiles(); //uses web root (wwwroot folder) by default

为来自不同位置的文件要再次使用该中间件不同的配置

public void Configure(IApplicationBuilder app) 
{ 
    app.UseStaticFiles(); // For the wwwroot folder 

    app.UseStaticFiles(new StaticFileOptions() 
    { 
     FileProvider = new PhysicalFileProvider(
      Path.Combine(Directory.GetCurrentDirectory(), "src")), 
     RequestPath = new PathString("/src") 
    }); 

但我不会建议。好的做法是分开存放你的代码,资产配置,并把它们捆绑到wwwroot目录为静态文件(使用任务管理的WebPack或只是复制生产)

More info about static files management in .NET Core

+0

我试过了你的自定义配置,但是我在端口上得到了:5000是一个空白页面。可能是什么原因?如果我在端口9000上开发(由aurelia提供)而不是端口:5000(由.NET提供),该怎么办?那么这个解决方案不会有帮助?没有你的自定义配置,如果我使用port:9000,默认的根目录不应该是src?那么我应该能够加载字体而不需要设置另一个根? – Reft

+0

我现在在端口5000上工作,但是在端口9000上仍然找不到静态文件。你知道一个解决办法吗?我没有端口上的浏览器同步:5000,所以我想开发我的应用程序的端口:9000。谢谢 – Reft

+0

如果我按照你的建议,而不改变根文件夹,我应该有一个资产文件夹在src包含我的少文件等和一个资产文件夹在wwwroot包含我的字体真棒字体等..? (我无法在wwwroot中引用样式表) – Reft