使用 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.StaticFiles
和 Microsoft.Extensions.FileProviders.Embedded
。
为了完整起见(对于像我这样的其他 dotnet 核心菜鸟),这里是 Program.cs 的 Main 函数:
static void Main(string[] args)
{
IWebHost webHost = new WebHostBuilder()
.UseKestrel()
.UseStartup<Startup>()
.Build();
webHost.Run();
}
我正在尝试通过 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.StaticFiles
和 Microsoft.Extensions.FileProviders.Embedded
。
为了完整起见(对于像我这样的其他 dotnet 核心菜鸟),这里是 Program.cs 的 Main 函数:
static void Main(string[] args)
{
IWebHost webHost = new WebHostBuilder()
.UseKestrel()
.UseStartup<Startup>()
.Build();
webHost.Run();
}