Example #1
0
        public static Task WritePage(IMetaData metaData, ISource source, IPageMaker pageMaker,
                                     IWebHandler handler, OutputData outputData)
        {
            MetaDataUtil.SetMetaData(pageMaker, handler.Style, metaData);
            IContent content = pageMaker.WritePage(source, handler, outputData);

            return(WriteContent(handler.Request, handler.Response, content));
        }
Example #2
0
        public static Task WritePage(IMetaData metaData, ISource source, IPageMaker pageMaker,
                                     IWebHandler handler)
        {
            PrepareSource(source, handler);
            OutputData outputData = CreateOutputData(metaData, source, handler.Style, handler);

            return(WritePage(metaData, source, pageMaker, handler, outputData));
        }
Example #3
0
        private static Task HandleException(IConfigCreator <IExceptionHandler> exceptionHandler,
                                            IWebHandler handler, WebBasePage page, Exception ex)
        {
            IPageData         pageData  = page ?? handler;
            IExceptionHandler exHandler = exceptionHandler.CreateObject(pageData);

            return(exHandler.HandleException(handler, page, ex));
        }
Example #4
0
        public override void Handle(INode node)
        {
            IWebHandler handler = node as IWebHandler;

            if (handler != null)
            {
                IsHandled = IsHandled || handler.ProcessRequest(_context);
            }
        }
        public Task HandleException(IWebHandler handler, WebBasePage page, Exception ex)
        {
            TkDebug.AssertArgument(ex is ErrorPageException, "ex", string.Format(ObjectUtil.SysCulture,
                                                                                 "此Handler只处理ErrorPageException,当前的Exception类型为{0}", ex.GetType()), this);

            ErrorPageSource source = new ErrorPageSource((ErrorPageException)ex);

            return(InternalWebUtil.WritePage(null, source, fPageMaker, handler));
        }
Example #6
0
        public static void RedirectPage(IMetaData metaData, ISource source, IWebHandler handler,
                                        OutputData outputData, IRedirector redirector)
        {
            MetaDataUtil.SetMetaData(redirector, handler.Style, metaData);
            string url = redirector.Redirect(source, handler, outputData);

            TkDebug.AssertNotNullOrEmpty(url,
                                         "Redirector.Redirect函数返回的Url为空,不能重定向该地址", redirector);
            url = AppUtil.ResolveUrl(url);

            handler.Response.Redirect(url, false);
        }
        public Task HandleException(IWebHandler handler, WebBasePage page, Exception ex)
        {
            string type = page == null?handler.GetType().ToString() : page.GetType().ToString();

            ExceptionSource source = new ExceptionSource(handler.SourceInfo.Source,
                                                         type, handler.PageUrl.ToString(), ex);

            if (LogException || handler.IsPost)
            {
                string fileName = ExceptionUtil.LogException(source.Data);
                source.FileName = fileName;
            }

            return(InternalWebUtil.WritePage(null, source, fPageMaker, handler));
        }
        public Task HandleException(IWebHandler handler, WebBasePage page, Exception ex)
        {
            FileData data = FileData.Create(fFileName);

            if (LogException)
            {
                string type = page == null?handler.GetType().ToString() : page.GetType().ToString();

                ExceptionData exData = new ExceptionData(handler.SourceInfo.Source,
                                                         type, handler.PageUrl.ToString(), ex);
                ExceptionUtil.LogException(exData);
            }
            handler.Response.ContentType = ContentTypeConst.HTML;
            return(handler.Response.WriteAsync(Encoding.UTF8.GetString(data.Data), Encoding.UTF8));
        }
Example #9
0
        public static bool GetResponse(HttpListenerContext context)
        {
            string url   = context.Request.Url.AbsolutePath;
            string query = context.Request.Url.Query;

            Console.WriteLine("url={0} : Query={1}", url, query);

            string[] parts = url.Trim('/').Split('/');

            if (parts[0] == "api" && parts.Length > 2)
            {
                string fullname = parts[0] + "/" + parts[1];
                if (responseHandlers.ContainsKey(fullname))
                {
                    IWebHandler wh = responseHandlers[fullname];
                    QuickResponse(context, wh.GetResponse(parts[2] + query));
                    return(true);
                }
            }
            else if (parts[0] == "api" && parts.Length > 1)
            {
                string fullname = parts[0] + "/" + parts[1];
                if (responseHandlers.ContainsKey(fullname))
                {
                    IWebHandler wh = responseHandlers[fullname];
                    QuickResponse(context, wh.GetResponse(query));
                    return(true);
                }
            }
            else if (parts[0] == "ping")
            {
                if (responseHandlers.ContainsKey(url))
                {
                    IWebHandler wh = responseHandlers[url];
                    QuickResponse(context, wh.GetResponse(query));
                    return(true);
                }
            }
            else
            {
                QuickResponse(context, "failed ");
            }
            return(false);
        }
        public Task HandleException(IWebHandler handler, WebBasePage page, Exception ex)
        {
            TkDebug.AssertArgument(ex is ReLogOnException, "ex", string.Format(ObjectUtil.SysCulture,
                                                                               "此Handler只处理ReLogonException,当前的Exception类型为{0}", ex.GetType()), this);
            TkDebug.ThrowIfNoAppSetting();

            string     logOnUrl = WebAppSetting.WebCurrent.LogOnPath;
            UriBuilder builder  = new UriBuilder(logOnUrl);
            string     retUrl   = "RetUrl=" + HttpUtility.UrlEncode(ex.Message);

            if (builder.Query != null && builder.Query.Length > 1)
            {
                builder.Query = builder.Query.Substring(1) + "&" + retUrl;
            }
            else
            {
                builder.Query = retUrl;
            }
            handler.Response.Redirect(builder.Uri.ToString(), false);

            return(Task.FromResult(0));
        }
 public Task HandleException(IWebHandler handler, WebBasePage page, Exception ex)
 {
     throw new Exception("空Exception,具体请看InnerException", ex);
 }
 private static T UnauthorizedRequest <T>(IWebHandler handler, string url) => handler.GetRequest <T>(url, null);
 private static T AuthorizedRequest <T>(IWebHandler handler, string url, string apiKey) => handler.GetRequest <T>(url, new Dictionary <string, string>()
 {
     { "Authorization", string.Format("Bearer {0}", apiKey) }
 });
Example #14
0
 public Repository(IWebHandler webHandler)
 {
     _webHandler = webHandler;
     _webHandler.EventsJsonReady += new JsonData(webHandler_EventsJsonReady);
     _webHandler.SelectedJsonReady += new JsonData(webHandler_SelectedJsonReady);
 }
 public WebController(ILogger <WebController> logger, IWebHandler webHandler) : base(logger) => _webHandler = webHandler;
Example #16
0
 public abstract Task HandleException(IWebHandler handler, WebBasePage page, Exception ex);
Example #17
0
 private static IWebHandler GetWebHandler(IWebHandler page, HttpContext context,
                                          PageSourceInfo info)
 {
     return(page ?? new ContextWebHandler(context, info));
 }
Example #18
0
 protected static void HandleException(ISource source,
                                       IPageMaker pageMaker, IWebHandler handler)
 {
     InternalWebUtil.WritePage(null, source, pageMaker, handler);
 }
Example #19
0
 public Repository(IWebHandler webHandler)
 {
     _webHandler = webHandler;
     _webHandler.EventsJsonReady   += new JsonData(webHandler_EventsJsonReady);
     _webHandler.SelectedJsonReady += new JsonData(webHandler_SelectedJsonReady);
 }