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); }); }); }
public void DefaultNotFoundRuns() { var pages = new ErrorPages(Context.Application.GetPublished()); var page = pages.GetPage(System.Net.HttpStatusCode.NotFound); Assert.NotNull(page); }
public void DefaultNotFoundReturned() { var x = new ErrorPages(Context.Application.GetPublished()); var page = x.DefaultNotFound(); Assert.True(page is DefaultErrorPage); }
public void DefaultErrorPageReturned() { var published = Context.Application.GetPublished(); var x = new ErrorPages(published); var page = x.DefaultServerError(); Assert.True(page is DefaultErrorPage); }
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); }
/// <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); }
/// <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); }
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); }
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); } } }
/// <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("-"); }