TL; DR: GitHub repository, где находятся демонстрационные проекты со всем необходимым сантехническим кодом. Для Nancy v. 1.4.3, а также для предварительной проверки версии 2.0.0-barneyrubble.
Nancy v. 2, поддерживающий .NET Core и .NET Standard, все еще находится в предварительном состоянии, поэтому даже если вы хотите придерживаться стабильной ветви v. 1, не проблема.
Вот шаг шаг за того, как сделать это с нуля, который работал для меня:
1) Создайте новый пустой ASP.NET вку внутреннее полотно
2) (обязательно, если вы хотели бы придерживаться Нэнси против 1). Open project.json
, удалить "Microsoft.NETCore.App"
зависимость и изменение целевой базы от "netcoreapp1.0"
до "net46"
, так frameworks
раздел будет выглядеть так:
"frameworks": {
"net46": {}
},
3) Добавьте следующие зависимости к project.json: "Microsoft.AspNetCore.Owin"
и "Nancy"
. На момент написания раздела зависимостей project.json
для V 1:.
"dependencies": {
// Ommited dependencies
"Microsoft.AspNetCore.Owin": "1.0.0",
"Nancy": "1.4.3"
},
Для против 2:.
"dependencies": {
// Ommited dependencies
"Microsoft.AspNetCore.Owin": "1.0.0",
"Nancy": "2.0.0-barneyrubble"
},
4) Создать класс, реализующий IRootPathProvider
и указать путь к папке wwwroot
(WebRootPath
свойство) во время выполнения, используя IHostingEnvironment
объект:
public class AppRootPathProvider : IRootPathProvider
{
private readonly IHostingEnvironment _environment;
public AppRootPathProvider(IHostingEnvironment environment)
{
_environment = environment;
}
public string GetRootPath()
{
return _environment.WebRootPath;
}
}
5) Создание переменного тока lass, полученный от DefaultNancyBootstrapper
, который будет извлекать объект IHostingEnvironment
и передать его ранее определенному корневому провайдеру. Она также будет меняться по умолчанию StaticContentsConventions
с вашим собственным:
public class AppNancyBootstrapper : DefaultNancyBootstrapper
{
public AppNancyBootstrapper(IHostingEnvironment environment)
{
RootPathProvider = new AppRootPathProvider(environment);
}
protected override void ConfigureConventions(NancyConventions conventions)
{
base.ConfigureConventions(conventions);
conventions.StaticContentsConventions.AddDirectory("css");
conventions.StaticContentsConventions.AddDirectory("js");
conventions.StaticContentsConventions.AddDirectory("fonts");
}
protected override IRootPathProvider RootPathProvider { get; }
}
6) Открыть Startup
класс и заменить последнюю строку в Configure
методом с этим:
app.UseOwin(x => x.UseNancy(options => options.Bootstrapper = new AppNancyBootstrapper(env)));
Он использует Bootstrapper, созданный в предыдущем шаге.
7) Теперь пришло время определить ваш NancyModule
. V.1:
public class AppNancyModule : NancyModule
{
public AppNancyModule()
{
Get["/"] = _ => View["index"];
Get["/{fileName}"] = parameters => View[parameters.fileName];
}
}
В. 2:
public class AppNancyModule : NancyModule
{
public AppNancyModule()
{
Get("/", _ => View["index"]);
Get("/{fileName}", parameters => View[parameters.fileName]);
}
}
И вы хорошо идти! Просто поместите свои статические файлы в wwwroot
- и сработайте.