Передача URL-адресов идентификаторов строки запроса с использованием пространства имен system.web.Routing

Я новичок в маршрутизации URL.

Случай 1: я могу реализовать маршрутизацию URL-адресов для URL:/content/category.aspx, сопоставленных с /Reservation

Случай 2: я не совсем уверен, как обрабатывать значения строки запроса.

Например:

URL:/content/category.aspx?SID=5&CID=191

Я хочу, чтобы это отображалось на: /Reservation

Код, написанный для случая 1:

Global.asa

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    RegisterRoutes(RouteTable.Routes)
End Sub

Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
    Dim urlPattern As String
    Dim Reservation As Route
    urlPattern = "Reservation/"
    Reservation = New Route(urlPattern, New JRouteHandler("~/content/category.aspx"))
    RouteTable.Routes.Add("Reservation", New Route("Reservation", New JRouteHandler     ("~/content/category.aspx")))
End Sub

Обработчик HTTP

Public Sub New(ByVal virtualPath As String)
    _virtualPath = virtualPath
End Sub

Public Function GetHttpHandler(ByVal requestContext As RequestContext) As IHttpHandler Implements IRouteHandler.GetHttpHandler
    If (Not UrlAuthorizationModule.CheckUrlAccessForPrincipal(_virtualPath, requestContext.HttpContext.User, requestContext.HttpContext.Request.HttpMethod)) Then
        requestContext.HttpContext.Response.StatusCode = CInt(Fix(HttpStatusCode.Unauthorized))
        requestContext.HttpContext.Response.End()
    End If

    Dim display = TryCast(BuildManager.CreateInstanceFromVirtualPath(_virtualPath, GetType(Page)), name)

    display.pageName = TryCast(requestContext.RouteData.Values("name"), String)
    Return display
End Function

Public Interface name
    Inherits IHttpHandler
    Property pageName() As String

End Interface

-В веб-конфигурации

</modules>


person Community    schedule 16.06.2009    source источник
comment
@OP, пожалуйста, отредактируйте и перепишите последнюю часть вопроса о веб-конфигурации - совершенно неясно, в чем заключается ваш вопрос.   -  person Assaf Lavie    schedule 16.06.2009
comment
я использовал Intelligencia.UrlRewriter.dll для перезаписи URL-адреса. Если я запускаю приложение через сервер разработки ASP.NET, я могу добиться своей маршрутизации (http: localhost: 1130/reserve/home). Если я запускаю приложение через IIS 5.1, я получаю HTTP 404 файл не найден ошибка.   -  person jyoti    schedule 30.06.2009
comment
поскольку этот вопрос не является общим обсуждением, этот вопрос не должен быть вики сообщества, пожалуйста, отредактируйте этот вопрос и снимите флажок «Вики сообщества».   -  person Muhammad Akhtar    schedule 10.08.2009


Ответы (1)


Вы не можете сделать это так, как вы делаете. Мы реализовали перезапись URL-адресов с помощью этой бесплатной сторонней DLL, вы можете достичь того, чего хотите, с помощью этого инструмента. Он также может обрабатывать строки запроса. Что мы сделали, так это добавили DLL в наше решение и прописали правила в web.config для сопоставления URL-адресов. Пожалуйста, попробуйте это, и если вам нужна дополнительная помощь, дайте мне знать.
http://www.urlrewriting.net/149/en/home.html

person Community    schedule 16.06.2009
comment
Маршрутизация URL-адресов с использованием пространства имен system.web.Routing: как передать значения строки запроса - person jyoti; 16.06.2009
comment
Для обработки queryString у меня есть правила записи в web.config, такие как... =t ignoreCase=true/› Я использовал dll с упомянутого веб-сайта и следую этому веб-сайту - person Muhammad Akhtar; 16.06.2009
comment
использовал dll и работает нормально. Если попытаться запустить веб-приложение с помощью IIS, я получаю сообщение об ошибке HTTP 404, файл не найден. - person jyoti; 25.06.2009
comment
эта ошибка возникает, когда файл физически не существует... Проверьте путь от URL-адреса и убедитесь, что этот файл находится в этом месте.... - person Muhammad Akhtar; 25.06.2009
comment
Когда я запускаю приложение через VS 2008, все работает нормально. Но когда я запускаю то же самое с помощью IIS, он дает эту ошибку - person jyoti; 26.06.2009
comment
должна быть проблема с путем, пожалуйста, проверьте URL-адрес. Я не могу угадать здесь вашу проблему. как я могу проверить вашу проблему... ??? - person Muhammad Akhtar; 26.06.2009