2017-02-09 44 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