Я взял следующий код из Stackoverflow-> в блог, который обрабатывает пользовательский 404 в Sitecore (который фактически перенаправляет 302 на страницу 404 со статусом 200, который получает google как soft 404) ,Обработчик Sitecore custom 404 в производстве
Несмотря на то, что это хорошо работает на наших локальных тестовых серверах, в тот момент, когда мы бросаем его на производство, сайт переходит на haywire и принимает 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: Я заменил ExecuteRequest своим обычным в web.config.
Если вы испытали подобную вещь или знаете о какой-либо проблеме, пожалуйста, проведите некоторый свет.
Заранее спасибо
Я бы подумал, что вызов в WebUtil.ExecuteWebPage будет проблематичным во всем, что связано с этим легким трафиком. Слишком много запросов обратной связи с обратной связью. Если ваша страница 404 каким-то образом вызывает 404 себя, вы можете попасть в цикл (возможно, это то, что происходит?) –