2017-08-17 46 views
0

我試圖通過Nancy在文件夾assets中提供靜態資源。下面是我使用的引導程序代碼:爲Nancy 2.0(clinteastwood)提供嵌入式靜態文件

protected override void ConfigureConventions(NancyConventions nancyConventions) 
{ 
    var assets = EmbeddedStaticContentConventionBuilder.AddDirectory(
     "/assets", GetType().Assembly); 
    nancyConventions.StaticContentsConventions.Add(assets); 
    base.ConfigureConventions(nancyConventions); 
} 

我已標記的文件(project root)/assets/test.css作爲嵌入資源。但是,當我啓動服務器並訪問localhost:5000/assets/test.css時,出現404錯誤。

應該指出,我在OS X Sierra上運行dotnet core 2.0-preview2-final。

+0

嘗試資產remane內容和刪除代碼 – Linefinc

+0

我仍然不能夠通過'/ test.css'或'/ Content/test.css'訪問文件。請注意標題,我希望嵌入靜態資源。 – eltiare

+0

我有同樣的問題,快速的方法是將資源添加到代理 – Linefinc

回答

1

我在Nancy Slack頻道與@inqonsole(Kevin Boon)交談,他讓我試用了一個在他的機器上工作的項目,這是一個不同的平臺。仍然沒有工作。可能是南希嵌入式中的一個錯誤(我將它們放在他們的Github上)。他建議使用Kestrel來代替嵌入式文件。這是啓動類:

public void Configure(IApplicationBuilder app) 
    { 

     app.UseStaticFiles(new StaticFileOptions() 
     { 
      FileProvider = new EmbeddedFileProvider(typeof(Startup).Assembly, typeof(Startup).Namespace + ".assets"), 
      RequestPath = new PathString("/assets") 
     }); 

    } 

你需要具有的NuGet包Microsoft.AspNetCore.StaticFilesMicrosoft.Extensions.FileProviders.Embedded在您的項目。

爲了完整起見(其它dotnet的核心菜鳥和我一樣),這裏是Program.cs中的主要功能:

static void Main(string[] args) 
    { 
     IWebHost webHost = new WebHostBuilder() 
      .UseKestrel() 
      .UseStartup<Startup>() 
      .Build(); 
     webHost.Run(); 
    }