Кажется, я решил свою проблему. Вы не можете получить доступ к объекту Request в Application_Start с помощью IIS7.0, хотя вы можете использовать его в пользовательском ограничении маршрута. Вот как я это сделал.
Определите пользовательское ограничение маршрута:
Imports System.Web
Imports System.Web.Routing
Public Class ConstraintHost
Implements IRouteConstraint
Private _value As String
Sub New(ByVal value As String)
_value = value
End Sub
Public Function Match(ByVal httpContext As System.Web.HttpContextBase, ByVal route As System.Web.Routing.Route, ByVal parameterName As String, ByVal values As System.Web.Routing.RouteValueDictionary, ByVal routeDirection As System.Web.Routing.RouteDirection) As Boolean Implements System.Web.Routing.IRouteConstraint.Match
Dim hostURL = httpContext.Request.Url.Host.ToString()
Return hostURL.IndexOf(_value, StringComparison.OrdinalIgnoreCase) >= 0
End Function
End Class
Затем определите маршрут:
routes.MapPageRoute(
"Search_Area1",
"Search",
"~/area1/search.aspx",
True,
Nothing,
New RouteValueDictionary(New With {.ArbitraryParamName = New ConstraintHost("domain1.com")})
)
routes.MapPageRoute(
"Search_Area2",
"Search",
"~/area2/search.aspx")
)
Этот метод также можно использовать для применения различной маршрутизации на основе субдомена.
Большое спасибо Стивену Уотеру за маршрутизацию asp.net mvc. за то, что указали мне правильное направление (хотя это было для mvc, а не для веб-форм).
person
DrewF
schedule
10.05.2010