Сохранение пути перезаписи ISAPI с тильдой ASP.NET (~)

Моя команда обновляется с ASP.NET 3.5 до ASP.NET 4.0. В настоящее время мы используем Helicon ISAPI Rewrite для сопоставления http://localhost/<account-name>/default.aspx с http://localhost/<virtual-directory>/default.aspx?AccountName=<account-name>, где <account-name> - это переменная строки запроса, а <virtual-directory> - виртуальный каталог (естественно).

Перед обновлением тильда (~) разрешается в http://localhost/<account-name>/... (что я хочу, чтобы она выполнялась), а после обновления тильда разрешается в http://localhost/<virtual-directory>/..., что приводит к ошибке, поскольку требуется строка запроса <account-name>.

Я бы хотел избежать замены всего относительными путями, потому что в нашей системе есть несколько функций, которые используют весь URL-адрес, а не только относительный путь.

Как бы то ни было, я использую IIS7 в Windows 7, Visual Studio 2010 с ASP.NET 4.0 и 64-битную версию Helicon ISAPI Rewrite. Если я вернусь к версии ASP.NET 3.5, она все равно будет работать нормально (что заставило меня поверить, что в IIS ничего не изменилось, если только оно не находится в пуле приложений 4.0 - когда я переключаюсь между 3.5 и 4.0, мне приходится менять пул приложений. в IIS).

Любые идеи? Заранее спасибо!


person Adam    schedule 14.06.2010    source источник


Ответы (1)


IIS 7 имеет приличную поддержку перенаправления http. поэтому вам, возможно, больше не понадобится использовать этот фильтр ISAPI

http://technet.microsoft.com/en-us/library/cc732969(WS.10).aspx

Другой способ использования ISAPI - использовать перенаправление модуля HTTP.

http://weblogs.asp.net/fmarguerie/archive/2004/11/18/265719.aspx

person Sonic Soul    schedule 14.06.2010
comment
Спасибо за ссылку! К сожалению, в нашей команде все еще есть разработчики, а также некоторые серверы, которые все еще используют IIS6, поэтому до их обновления нам, вероятно, придется придерживаться Helicon ISAPI. - person Adam; 15.06.2010
comment
Спасибо! Я надеюсь придерживаться Helicon, чтобы нам не пришлось мигрировать и тестировать все перезаписи. Но если до этого доходит, то хорошо знать, что я могу использовать перенаправление модуля HTTP. Мне также любопытно, в чем заключается основная проблема. Возможно, .NET 4.0 не очень хорошо работает с Helicon ... если это так, то HTTP Module Redirect звучит неплохо. - person Adam; 15.06.2010
comment
это ваш вызов ... но я не могу представить, что поддержка фильтров isapi так проста, если модули HTTP управляются кодом .net. предлагает большую гибкость и простоту обслуживания, поэтому, возможно, стоит изучить .. - person Sonic Soul; 15.06.2010
comment
Перезапись ISAPI очень проста в обслуживании. Все правила перезаписи хранятся в текстовом файле, который находится в корне веб-папки. Его исходный код контролируется и развертывается, как и все остальное. - person 3Dave; 15.06.2010