Response.Radirect на странице с перезаписью URL-адреса с помощью модуля перезаписи URL-адреса IIS - PullRequest
3 голосов
/ 09 августа 2010

Я использую модуль 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)

Спасибо.

1 Ответ

2 голосов
/ 09 августа 2010

Два варианта.Вы можете сделать:

Response.Redirect("/company/test.aspx")

или

Response.Redirect("http://domain/company/test.aspx")

Это одна из проблем использования динамических URL-адресов, с которой вам придется столкнуться, если вы собираетесь их использовать..

Вероятно, лучшее решение - написать функцию, которую будут видеть все ваши страницы, которая сделает это за вас.Таким образом, вы можете просто написать:

MyRedirectFunction("test.aspx")

и все детали за кадром.

...