Cassette.Nancy.WebHost.RunCassetteRequestHandler C# (CSharp) Метод

RunCassetteRequestHandler() публичный Метод

public RunCassetteRequestHandler ( Nancy.NancyContext context ) : Response
context Nancy.NancyContext
Результат Nancy.Response
    public Response RunCassetteRequestHandler(NancyContext context)
    {
      try
      {
        logger.Info("RunCassetteRequestHandler : {0}", context.Request.Path);

        if(!context.Request.Path.StartsWith(string.Concat("/", UrlModifier.CassettePrefix)))
          return null;

        var path = context.Request.Path.Substring(UrlModifier.CassettePrefix.Length);

        if (string.IsNullOrWhiteSpace(path))
        {
          var handler = Container.Resolve<ICassetteRequestHandler>(DiagnosticRequestHandler.PathPrefix);
          return handler.ProcessRequest(context, path);
        }

        if (path.StartsWith(AssetRequestHandler.PathPrefix))
        {
          var handler = Container.Resolve<ICassetteRequestHandler>(AssetRequestHandler.PathPrefix);
          return handler.ProcessRequest(context, path);
        }
      
        if (path.StartsWith(RawFileRequestHandler.PathPrefix))
        {
          var handler = Container.Resolve<ICassetteRequestHandler>(RawFileRequestHandler.PathPrefix);
          return handler.ProcessRequest(context, path);
        }

        if (path.StartsWith(BundleRequestHandler<Scripts.ScriptBundle>.PathPrefix))
        {
          var handler = Container.Resolve<ICassetteRequestHandler>(BundleRequestHandler<Scripts.ScriptBundle>.PathPrefix);
          return handler.ProcessRequest(context, path);
        }

        if (path.StartsWith(BundleRequestHandler<Stylesheets.StylesheetBundle>.PathPrefix))
        {
          var handler = Container.Resolve<ICassetteRequestHandler>(BundleRequestHandler<Stylesheets.StylesheetBundle>.PathPrefix);
          return handler.ProcessRequest(context, path);
        }

        if (path.StartsWith(BundleRequestHandler<HtmlTemplates.HtmlTemplateBundle>.PathPrefix))
        {
          var handler = Container.Resolve<ICassetteRequestHandler>(BundleRequestHandler<HtmlTemplates.HtmlTemplateBundle>.PathPrefix);
          return handler.ProcessRequest(context, path);
        }

        return null;
      }
      catch(Exception ex)
      {
        logger.FatalException(string.Format("RunCassetteRequestHandler : {0} : {1}", ex.GetType(), ex.Message), ex);
        return null;
      }
    }

Usage Example

Пример #1
0
        private Response RunCassetteRequestHandler(NancyContext context)
        {
            logger.Debug("RunCassetteRequestHandler starting");
            currentContext.Value = context;

            // Some parts of WebHost initialization require a valid NancyContext, so defer
            // creation of the WebHost until the first request hits the pipeline.
            if (webHost == null)
            {
                logger.Debug("WebHost is null, acquiring lock...");

                lock (webHostLocker) {
                    logger.Debug("I have the lock...");

                    if (webHost == null)
                    {
                        logger.Debug("I have the lock and webHost is still null. Creating/initing it...");
                        webHost = new WebHost(rootPathProvider, () => currentContext.Value);
                        webHost.Initialize();
                        logger.Debug("...finished creating/initing webHost.");
                    }
                }
            }

            logger.Debug("RunCassetteRequestHandler - running request handler.");
            return(webHost.RunCassetteRequestHandler(context));
        }
All Usage Examples Of Cassette.Nancy.WebHost::RunCassetteRequestHandler