Пример #1
0
        public void Setup()
        {
            ErrorPages errorPages = GetErrorPages();

            _session.Transact(session =>
            {
                GetBasicPages().ForEach(webpage => session.Save(webpage));

                session.Save(errorPages.Error403);
                session.Save(errorPages.Error404);
                session.Save(errorPages.Error500);
            });

            var siteSettings = _configurationProvider.GetSiteSettings <SiteSettings>();

            siteSettings.Error403PageId = errorPages.Error403.Id;
            siteSettings.Error404PageId = errorPages.Error404.Id;
            siteSettings.Error500PageId = errorPages.Error500.Id;
            _configurationProvider.SaveSettings(siteSettings);

            _session.Transact(session =>
            {
                GetAccountPages().ForEach(webpage => session.Save(webpage));

                session.Save(GetSearchPage());

                var webpages  = _session.QueryOver <Webpage>().List();
                var publishOn = CurrentRequestData.Now;
                webpages.ForEach(webpage =>
                {
                    webpage.PublishOn = publishOn;
                    session.Update(webpage);
                });
            });
        }
Пример #2
0
        public void DefaultNotFoundRuns()
        {
            var pages = new ErrorPages(Context.Application.GetPublished());
            var page  = pages.GetPage(System.Net.HttpStatusCode.NotFound);

            Assert.NotNull(page);
        }
Пример #3
0
        public void DefaultNotFoundReturned()
        {
            var x    = new ErrorPages(Context.Application.GetPublished());
            var page = x.DefaultNotFound();

            Assert.True(page is DefaultErrorPage);
        }
Пример #4
0
        public void DefaultErrorPageReturned()
        {
            var published = Context.Application.GetPublished();
            var x         = new ErrorPages(published);
            var page      = x.DefaultServerError();

            Assert.True(page is DefaultErrorPage);
        }
Пример #5
0
        public void DefaultServerErrorRuns()
        {
            var pages = new ErrorPages(Context.Application.GetPublished());
            var found = pages.TryGetPage(System.Net.HttpStatusCode.InternalServerError, out var page);

            Assert.True(found);
            Assert.NotNull(page);
        }
Пример #6
0
        /// <summary>
        /// Finds the name of error pages files.
        /// </summary>
        /// <param name="path">path to the error page.</param>
        /// <returns>Name of the error page.</returns>
        public string FindErrorPageFileName(int statusCode)
        {
            string fileName = null;

            if (ErrorPages.ContainsKey(statusCode))
            {
                ErrorPages.TryGetValue(statusCode, out fileName);
            }
            return(fileName);
        }
Пример #7
0
        /// <summary>
        /// 此方法在執行階段被呼叫,使用此方法設定錯誤頁面的檔案
        /// </summary>
        /// <param name="app"><see cref="IApplicationBuilder"/>實例</param>
        /// <param name="env">主機環境實例</param>
        public void ConfigureErrorPages(IApplicationBuilder app, IHostingEnvironment env)
        {
            //取得所有錯誤頁面設定
            var pages = Configuration.GetSection("ErrorPages")?.GetChildren();

            //未設定則跳脫
            if (pages == null)
            {
                return;
            }

            //讀取所有錯誤頁面對應
            foreach (var page in pages)
            {
                //取得子屬性集合
                dynamic obj = page.ToDynamicObject();

                //存入狀態對應
                ErrorPages[int.Parse(obj.StatusCode)] = obj.FilePath;
            }

            //錯誤處理
            Action <IApplicationBuilder> errorHandler = (builder) => {
                builder.Run(handler => {
                    return(Task.Run(() => {
                        //取得狀態碼
                        int code = handler.Response.StatusCode;

                        //檢查是否存在指定的對應
                        if (ErrorPages.ContainsKey(code))
                        {
                            //寫出錯誤頁面內容
                            byte[] Content = System.IO.File.ReadAllBytes(env.WebRootPath + "/" + ErrorPages[handler.Response.StatusCode]);
                            handler.Response.ContentType = "text/html";
                            handler.Response.Body.WriteAsync(Content, 0, Content.Length);
                            return;

                            //以跳轉的方式到錯誤頁面
                            //handler.Response.Redirect($"{handler.Request.PathBase}/{ErrorPages[handler.Response.StatusCode]}");
                        }
                    }));
                });
            };

            //狀態對應
            app.UseStatusCodePages(errorHandler);

            //例外對應
            app.UseExceptionHandler(errorHandler);
        }
Пример #8
0
        public void SetDefaultErrorPage()
        {
            var published = Context.Application.GetPublished();
            var x         = new ErrorPages(published);
            var page      = new MyPage();

            x.SetDefaultPage(HttpStatusCode.ExpectationFailed, () => page);
            var result = x.GetPage(HttpStatusCode.ExpectationFailed);
            var show   = result.CreateInstance();

            Assert.Same(page, show);

            x.Remove(HttpStatusCode.ExpectationFailed);
            result = x.GetPage(HttpStatusCode.ExpectationFailed);
            Assert.Null(result);
        }
Пример #9
0
        public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(env.ContentRootPath)
                          .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                          .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                          .AddEnvironmentVariables();

            if (env.IsDevelopment())
            {
                // This will push telemetry data through Application Insights pipeline faster, allowing you to view results immediately.
                builder.AddApplicationInsightsSettings(developerMode: true);
            }
            Configuration = builder.Build();

            foreach (var c in Configuration.GetSection("ErrorPages").GetChildren())
            {
                var key = Convert.ToInt32(c.Key);
                if (!ErrorPages.Keys.Contains(key))
                {
                    ErrorPages.Add(key, c.Value);
                }
            }
        }
Пример #10
0
        /// <summary>
        /// Initiates the server configuration and applications configuration.
        /// </summary>
        private void Init()
        {
            Console.WriteLine("+-+-+ INITIATING CONFIGURATION MANAGER +-+-+");
            Console.WriteLine("-- Loading configuration from JSON configuration file...");
            // Getting general JSON string from file
            JObject configJson = JsonConvert.DeserializeObject(File.ReadAllText(_path)) as JObject;

            // Assigning port from JSON
            Port = int.Parse(configJson["port"].ToString());

            // Populating defaultDocument List
            foreach (var document in configJson["defaultDocument"] as JArray)
            {
                DefaultDocument.Add(document.ToString());
            }

            // Populating errorPages Dictionary
            JProperty property;

            foreach (var token in configJson["errorPages"] as JArray)
            {
                property = token.First.Value <JProperty>();
                ErrorPages.Add(int.Parse(property.Name), property.Value.ToString());
            }

            // Populatin sites Struct List
            Site site = new Site();

            foreach (var token in configJson["sites"] as JArray)
            {
                site.DefaultDocument   = new List <string>();
                site.ErrorPages        = new Dictionary <int, string>();
                site.Name              = token["name"].ToString();
                site.PhysicalPath      = token["physicalPath"].ToString();
                site.VirtualPath       = token["virtualPath"].ToString();
                site.DirectoryBrowsing = bool.Parse(token["directoryBrowsing"].ToString());

                foreach (var document in token["defaultDocument"] as JArray)
                {
                    site.DefaultDocument.Add(document.ToString());
                }

                foreach (var pages in token["errorPages"] as JArray)
                {
                    property = pages.First.Value <JProperty>();
                    site.ErrorPages.Add(int.Parse(property.Name), property.Value.ToString());
                }

                Sites.Add(site);
            }

            //Printing Config
            Console.WriteLine("  + Port: {0}", Port);
            foreach (var document in DefaultDocument)
            {
                Console.WriteLine("  + Default Document: {0}", document);
            }
            foreach (var page in ErrorPages)
            {
                Console.WriteLine("  + Error Page: {0}", page);
            }
            int i = 0;

            foreach (var s in Sites)
            {
                Console.WriteLine("  + Site [{0}] | Name: {1}", i, s.Name);
                Console.WriteLine("  + Site [{0}] | Physical Path: {1}", i, s.PhysicalPath);
                Console.WriteLine("  + Site [{0}] | Virtual Path: {1}", i, s.VirtualPath);
                Console.WriteLine("  + Site [{0}] | Directory Browsing: {1}", i, s.DirectoryBrowsing);
                foreach (var document in s.DefaultDocument)
                {
                    Console.WriteLine("  + SiteDocument: {0}", document);
                }
                foreach (var pages in s.ErrorPages)
                {
                    Console.WriteLine("  + SiteErrorPage: {0}", pages);
                }
                i++;
            }
            Console.WriteLine("-- Configuration Loading COMPLETE!");
            Console.WriteLine("-");
        }