using System.Web;
namespace Umbraco.Web.Routing
{
///
/// Gets executed when no document can be found in Umbraco
///
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("
Page not found
");
response.Write("");
response.Write(string.Format(reason, HttpUtility.HtmlEncode(UmbracoContext.Current.OriginalRequestUrl.PathAndQuery)));
response.Write("
");
if (!string.IsNullOrWhiteSpace(_message))
response.Write("" + _message + "
");
response.Write("This page can be replaced with a custom 404. Check the documentation for \"custom 404\".
");
response.Write("This page is intentionally left ugly ;-)
");
response.Write("");
response.End();
}
public bool IsReusable
{
get { return false; }
}
}
}