Мы заменяем старый классический сайт asp решением .NET 3.5.
Нам нужно перенаправить все классические запросы ASP на страницы aspx (то есть contactus.asp, теперь может перенаправляться на /contact-us/default.aspx). Что мне нравится, так это запросы на попадание в global.asax, чтобы я мог сделать что-то вроде
If url == "bob.asp"
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", SiteConfig.SiteURL + redirectUrl);
End If
Есть два не элегантных решения.
A) Поместите файл global.asa и выполните маршрутизацию через него.
B) Сопоставить файлы asp с движком .NET. Отлично, но если нам понадобится разместить на наших сайтах классические asp-сайты, IIS будет отправлять запросы не туда.
Я нашел хорошее решение здесь
http://forums.asp.net/p/1202225/3458901.aspx
Который сказал, что-то вроде этого может работать ...
<buildProviders>
<add extension=".php" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
<httpHandlers>
<add verb="*" path="*.php" type="System.Web.UI.PageHandlerFactory" validate="True" />
</httpHandlers>
Этот пример был для php, но я предполагаю, что то же самое будет работать для asp. Однако после изменения .php на .asp в примере и размещения тегов в правильной части web.config я не испытываю радости (на самом деле ошибка 500 серверов).
Может кто-нибудь пролить свет на это или дать мне элегантное решение.
Было ощущение, что вышеуказанное решение не будет работать для php или asp, поскольку IIS перенаправит запрос до того, как он попадет в ядро .NET.
Заранее спасибо
Steve