2017-07-16 44 views
0

使用ImageSharp和.Net Core處理某些圖像。以如下加載我做的圖像和字體:.Net Core - 發佈時未找到引用的文件

_image = Image.Load(@"Resources/imgs/quote_background.png"); 

_fonts = new FontCollection(); 
_font = _fonts.Install(@"Resources/fonts/Cousine-Italic.ttf"); 

// Image processing... 

我的文件樹是這個樣子:

- Solution 
    - - MyApp 
    - - - Controllers 
    - - - Models 
    - - - - Code.cs // This is where the above code is 
    - - - wwwroot 
    - - - Resources 
    - - - - imgs 
    - - - - fonts 

當我啓動通過Visual Studio它工作正常的應用程序,它找到的圖像。但是,當我部署到AWS或到我的本地IIS我得到以下錯誤:

DirectoryNotFoundException: Could not find a part of the path 'C:\inetpub\wwwroot\MyApp\Resources\imgs\quote_background.png'. 

什麼是引用該圖像的正確方法?

感謝

回答

1

您需要使用ContentRootPath從IHostingEnvironment,這就需要你注入的IHostingEnvironment到您的控制器,例如:

public class ImageController : Controller 
{ 
    private readonly IHostingEnvironment _hostingEnvironment; 

    public ImageController(IHostingEnvironment hostingEnvironment) 
    { 
     _hostingEnvironment = hostingEnvironment; 
    } 

    public ActionResult Index() 
    { 
     var image = Image.Load(String.Format(@"{0}/Resources/imgs/quote_background.png", 
      _hostingEnvironment.ContentRootPath); 
     //etc... 
    } 
} 

還有WebRootPath它可以讓你的wwwroot文件。

+0

嗨馬特,謝謝你的回答。我照你說的做了,但仍然有同樣的錯誤。它似乎映射到以前相同的目錄...當我發佈項目Resource文件夾確​​實沒有生成...你認爲我必須配置的東西......? –

+0

好的,看到其他答案和[這一個](https://stackoverflow.com/a/42713770/934407),你的圖像實際上是發佈? – Matt

+0

謝謝馬特...它確實解決了,但我不得不手動編輯我的.csproj,因爲Visual Studio在我嘗試設置屬性時提示錯誤... –

1

你要確保你標誌着你的Resources文件夾中的文件作爲「複製到輸出目錄」 =「複製,如果新」

Property screen shot showing copy to output directy set to copy if newer

,將確保該文件最終在你的輸出當你發佈該網站時。

相關問題