Я использую модуль IIS Url Rewrite для перезаписи URL для моего веб-приложения ASP.Net. URL переписываются с:
http://domain/version/page.aspx
до
http://domain/company/page.aspx
И это прекрасно работает при прямом просмотре с использованием абсолютных путей. Проблема возникает при навигации по приложению с использованием относительных путей. любой вид относительного пути.
Все относительные пути перенаправляются на соответствующий http://domain/version/page.aspx
вместо http://domain/COMPANY/page.aspx
, куда он должен идти.
Я решил большую часть проблемы, добавив эту строку в событие BeginRequest в Global.asax:
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs)
HttpContext.Current.RewritePath(HttpContext.Current.Request.Url.AbsolutePath, True)
End Sub
По сути, это просто перебазирование виртуального пути к запрошенному URL.
Но даже с этим Response.Redirect STILL перенаправляет на фактический путь, а не на виртуальный путь.
Итак, этот код: Response.Redirect("~/test.aspx")
будет перенаправлен на domain/Version/test.aspx
вместо domain/Company/test.aspx
Как сделать перенаправление Response.Redirect на виртуальный путь (domain/COMPANY/test.aspx
) вместо действительного пути (domain/VERSION/test.aspx
)
Спасибо.