예제 #1
0
        /// <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;
        }
예제 #2
0
        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;
        }
예제 #3
0
        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;
        }
예제 #4
0
 public DefaultViewRendererFixture()
 {
     this.factory  = A.Fake <IViewFactory>();
     this.renderer = new DefaultViewRenderer(this.factory);
 }