Как я могу что-то сделать перед обработкой запроса в Nancy 2.x? - PullRequest
1 голос
/ 28 января 2020

Я хочу делать некоторые вещи в каждом запросе, независимо от модуля или маршрута. Как я могу выполнить sh это в Nancy 2.x?

Если найдено Как перехватить все запросы Nancy и Как мне перехватить все запросы независимо от глагола или пути , но они применимы только для Nancy 1.x, а документация устарела.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Как вы говорите, документация не обновляется, и большинство ресурсов, которые вы можете найти в Интернете, предназначены для версии 1.x.

Способ ее решения зависит от того, что вы хотите сделать. Если вы не возражаете против ответа, вы можете переопределить ApplicationStartUp в загрузчике следующим образом:

protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
{
    pipelines.BeforeRequest.AddItemToEndOfPipeline((ctx) =>
    {
        Console.Out.WriteLine("Hit");
        return null;
    });
    base.ApplicationStartup(container, pipelines);
}

Если вам, с другой стороны, нужно вмешиваться в ответ и заголовки, вы можете это сделать в конструкторе вашей переопределенной NancyModule с вашей Get настройкой, например:

public InstrumentProgrammingNancyModule()
{
    //// Enable CORS. 
    After.AddItemToEndOfPipeline((ctx) =>
        {
            ctx.Response.WithHeader("Access-Control-Allow-Origin", "*") 
                .WithHeader("Access-Control-Allow-Methods", "GET"); 
        });

    Get("/" , _ =>
    {
        return somethingOrOther;
    });
    ....
}

Оба эти решения работают с Nacy 2.0.

0 голосов
/ 29 января 2020

Вы можете попробовать это:

 public class NewBootstrapper : DefaultNancyBootstrapper
 {
        protected override void RequestStartup(TinyIoCContainer container, IPipelines pipelines, NancyContext context)
        {
            //Your code here
            base.RequestStartup(container, pipelines, context);
        }
 }
...