Files
Umbraco-CMS/src/Umbraco.Web/Routing/PublishedContentNotFoundHandler.cs

57 lines
1.6 KiB
C#
Raw Normal View History

using System.Web;
namespace Umbraco.Web.Routing
{
/// <summary>
/// Gets executed when no document can be found in Umbraco
/// </summary>
internal class PublishedContentNotFoundHandler : IHttpHandler
{
string _message;
public PublishedContentNotFoundHandler()
{ }
public PublishedContentNotFoundHandler(string message)
{
_message = message;
}
public void ProcessRequest(HttpContext context)
{
WriteOutput(context);
}
internal void WriteOutput(HttpContext context)
{
var response = context.Response;
response.Clear();
var docreq = UmbracoContext.Current.PublishedContentRequest;
var reason = "Cannot render the page at url '{0}'.";
if (!docreq.HasPublishedContent)
reason = "No umbraco document matches the url '{0}'.";
else if (!docreq.HasTemplate)
reason = "No template exists to render the document at url '{0}'.";
response.Write("<html><body><h1>Page not found</h1>");
response.Write("<h3>");
response.Write(string.Format(reason, HttpUtility.HtmlEncode(UmbracoContext.Current.OriginalRequestUrl.PathAndQuery)));
response.Write("</h3>");
if (!string.IsNullOrWhiteSpace(_message))
response.Write("<p>" + _message + "</p>");
response.Write("<p>This page can be replaced with a custom 404. Check the documentation for \"custom 404\".</p>");
response.Write("<p style=\"border-top: 1px solid #ccc; padding-top: 10px\"><small>This page is intentionally left ugly ;-)</small></p>");
response.Write("</body></html>");
response.End();
}
public bool IsReusable
{
get { return false; }
}
}
}