나는 내 자신의 문제를 해결 한 것 같다. IIS7.0을 사용하여 Application_Start에서 요청 개체에 액세스 할 수는 없지만 사용자 지정 라우트 제약 조건에서 사용할 수는 있습니다. 여기 내가 어떻게 그랬어.
사용자 정의 경로 제약 조건을 정의합니다
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")
)
이 기술은 또한뿐만 아니라 하위 도메인에 따라 다른 라우팅을 적용하는 데 사용 할 수 있습니다.
올바른 방향으로 나를 가리키는 Steven Wather의 asp.net mvc routing 게시물에 큰 감사를 전합니다 (mvc가 아니고 웹 양식이더라도).
예제는 실제 구현에서 제외되었으므로 관련 로직은 web.config (고정 경로 정의)를 사용하여 작동하지 않습니다. 그래, 나는 그 기사를 보았다. begin_request에 대한 페이지 이동 경로 매핑이 작동하지 않는다고 생각하며 AppDomainAppVirtualPath가 호스트 이름을 기반으로하는 논리를 가지고 있기 때문에 도움이되지 않습니다. 내 생각에 솔루션은 페이지 요청 수준에서 라우팅이 실행되는 수단에 과부하가 걸리는 것과 관련이 있으며 라우트가 정의 된 위치 (application_start)가 아닙니다. 나는 그것을하는 방법에 관해서 단서가 없다. 어떤 아이디어 나 제안? – DrewF
appsettings에서 web.config에 "domain1.com"을 저장하는 것에 대해 이야기했습니다. –