我從Stackoverflow->博客重新處理Sitecore中的自定義404(它實際上做302重定向到狀態200的404頁面,它被google作爲軟404獲取) 。生產中的Sitecore自定義404處理程序
雖然這在我們的本地測試服務器中完全正常,但當我們在生產中丟棄該網站時,網站出現故障並需要AGES 8-9分鐘加載和東西。
public class ExecuteRequest : Sitecore.Pipelines.HttpRequest.ExecuteRequest
{
protected override void RedirectOnItemNotFound(string url)
{
var context = System.Web.HttpContext.Current;
try
{
// Request the NotFound page
var domain = context.Request.Url.GetComponents(
UriComponents.Scheme | UriComponents.Host,
UriFormat.Unescaped);
var content = WebUtil.ExecuteWebPage(
string.Concat(domain, url));
// The line below is required for IIS 7.5 hosted
// sites or else IIS is gonna display default 404 page
context.Response.TrySkipIisCustomErrors = true;
context.Response.StatusCode = 404;
context.Response.Write(content);
}
catch (Exception ex)
{
Log.Error(string.Format("Falling back to default redirection behavior. Reason for error {0}", ex), ex);
// Fall back to default behavior on exceptions
base.RedirectOnItemNotFound(url);
}
context.Response.End();
}
}
P.S:然後我在web.config中用我自定義的一個替換了ExecuteRequest。
如果您遇到類似的事情或知道任何問題,請務必澄清一些情況。
在此先感謝
我曾想過對WebUtil.ExecuteWebPage的調用在任何其他輕量級流量中都會產生問題。太多的循環Web請求觸發。如果你的404頁面以某種方式調用404本身,你可能會進入循環(也許這是發生了什麼?) – 2013-04-18 08:53:31