У меня есть HttpModule, который перенаправляет определенные URL-адреса в приложении ASP.NET WebForms. Он работает на моей машине с сервером разработки ASP.NET. Но когда я загружаю его на наш сервер Win2k8 с IIS7, он, похоже, совсем не реагирует. Я поместил <add name="Test.Web" type="Test.Web.Core.HttpModules.RedirectOldUrls, Test.Web" />
в раздел system.webServer / modules, а в inetmgr я вижу этот модуль среди других. Кажется, что веб-сайт ведет себя одинаково до и после загрузки кода, чего не должно быть.
Пример отредактированного кода:
public void Init(HttpApplication context)
{
context.Error += PageNotFoundHandler;
}
public static void PageNotFoundHandler(object sender, EventArgs evt)
{
Exception lastErrorFromServer = HttpContext.Current.Server.GetLastError();
if (lastErrorFromServer != null)
{
RedirectToNewUrlIfApplicable();
}
}
private static void RedirectToNewUrlIfApplicable()
{
string redirectUrl = GetRedirectUrl();
if (!string.IsNullOrEmpty(redirectUrl))
{
HttpContext.Current.Response.Status = "301 Moved Permanently";
HttpContext.Current.Response.AddHeader("Location", redirectUrl);
}
}
private static string GetRedirectUrl()
{
return RedirectableUrls.GetUrl();
}