使用Nancy 2.0(clinteastwood)提供嵌入式静态文件

时间:2017-08-17 16:45:39

标签: c# .net-core nancy kestrel-http-server

我尝试通过Nancy在<div id="calendar"></div>文件夹中提供静态资源。这是我在Bootstrapper中使用的代码:

assets

我已将文件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时,我收到404错误。

应该注意的是,我在OS X Sierra上运行了dotnet core 2.0-preview2-final。

1 个答案:

答案 0 :(得分:1)

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

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核心noob),这里是Program.cs的主要功能:

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