使用 Nancy 2.0 服务嵌入静态文件 (clint eastwood)

Serving embeded static files with Nancy 2.0 (clinteastwood)

我正在尝试通过 Nancy 为文件夹 assets 中的静态资产提供服务。这是我在 Bootstrapper 中使用的代码:

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。

我在 Nancy Slack 频道与@inqonsole (Kevin Boon) 交谈,他让我尝试了一个在他的机器上运行的项目,这是一个不同的平台。仍然没有用。可能是 Nancy-Embedded 中的错误(我会在他们的 Github 上归档)。他建议改用 Kestrel 来提供嵌入式文件。这是在启动 class:

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 的 Main 函数:

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