/// <summary> /// Return Custom View on Error Code /// </summary> /// <param name="statusCode"></param> /// <param name="context"></param> public void Handle(HttpStatusCode statusCode, NancyContext context) { Response response; DefaultViewRenderer _viewRenderer = new DefaultViewRenderer(_factory); var model = new DOLNancyDefaultModel(context); model.Title = statusCode.ToString(); if (statusCode == HttpStatusCode.Forbidden) { response = _viewRenderer.RenderView(context, "views/errors/403.sshtml", model); } else if (statusCode == HttpStatusCode.NotFound) { response = _viewRenderer.RenderView(context, "views/errors/404.sshtml", model); } else if (statusCode == HttpStatusCode.MethodNotAllowed) { response = _viewRenderer.RenderView(context, "views/errors/405.sshtml", model); } else { response = _viewRenderer.RenderView(context, "views/errors/500.sshtml", model); } // RenderView sets the context.Response.StatusCode to HttpStatusCode.OK // so make sure to override it correctly response.StatusCode = statusCode; context.Response = response; }
public void Handle(HttpStatusCode statusCode, NancyContext context) { var viewRenderer = new DefaultViewRenderer(viewFactory); var response = viewRenderer.RenderView(context, "404"); context.Response = response; context.Response.StatusCode = HttpStatusCode.NotFound; }
public void Handle(HttpStatusCode statusCode, NancyContext context) { IViewRenderer renderer = new DefaultViewRenderer(factory); Response response; switch (statusCode) { case HttpStatusCode.NotFound: response = renderer.RenderView(context, "Error/error.cshtml", new Error("404", "The requested page was not found.")); break; case HttpStatusCode.Forbidden: response = renderer.RenderView(context, "Error/error.cshtml", new Error("403", "You don't have access to this page.")); break; case HttpStatusCode.Unauthorized: response = renderer.RenderView(context, "Error/error.cshtml", new Error("401", "You are not allowed to view this page.")); break; case HttpStatusCode.InternalServerError: response = renderer.RenderView(context, "Error/error.cshtml", new Error("500", "An internal error occured.")); object exceptionKey; object exceptionObject; context.Items.TryGetValue(NancyEngine.ERROR_EXCEPTION, out exceptionObject); context.Items.TryGetValue(NancyEngine.ERROR_KEY, out exceptionKey); if (exceptionKey != null) { Console.WriteLine(exceptionKey.ToString()); } if (exceptionObject != null) { Console.WriteLine(exceptionObject.ToString()); } break; default: response = renderer.RenderView(context, "Error/error.cshtml", new Error(":(", "How did I end up here?")); break; } response.StatusCode = statusCode; context.Response = response; }
public DefaultViewRendererFixture() { this.factory = A.Fake <IViewFactory>(); this.renderer = new DefaultViewRenderer(this.factory); }