Partilhar via


Como: Use o roteamento com Web Forms

Roteamento do ASP.NET permite que você manipular as solicitações de URL não são mapeadas para um arquivo físico no aplicativo Web Web.Por padrão, ASP.NET roteamento estiver ativado em um aplicativo ASP.NET para dados dinâmicos ou estrutura MVC, mas o roteamento não está ativado em projetos de site da Web do ASP.NET.Portanto, para usar o roteamento em um site da Web ASP.NET, você deve tomar medidas para ativá-lo.

Para ativar o roteamento, você deve alterar o arquivo de configuração para o aplicativo para registrar o assembly de roteamento e para adicionar o UrlRoutingModule classe sistema autônomo um módulo. Você também deve criar um manipulador de rotas personalizadas para o rota.O manipulador implementa o IRouteHandler interface e cria uma instância de formulário da Web (o arquivo .aspx) que será o ponto de extremidade real para a solicitação. Finalmente, você deve definir as rotas que são servidas pelo manipulador.Este tópico mostra como executar essas etapas.

inspeção a um vídeo que mostra esse recurso.

Para configurar um projeto de site ASP.NET Web para roteamento

  1. No arquivo de Web.config do aplicativo, adicione o assembly de roteamento do ASP.NET à assemblies elemento, sistema autônomo mostrado no exemplo a seguir:

    <add assembly="System.Web.Routing, Version=3.5.0.0, 
      Culture=neutral, 
      PublicKeyToken=31BF3856AD364E35"/>
    
  2. Se o aplicativo é executado sob o IIS 6.0 ou IIS 7.0 Modo clássico, adicionar a UrlRoutingModule classe para o httpModules elemento, sistema autônomo mostrado no exemplo a seguir:

    <httpModules>
      <add name="UrlRoutingModule" 
           type="System.Web.Routing.UrlRoutingModule, 
                 System.Web.Routing, 
                 Version=3.5.0.0, 
                 Culture=neutral, 
                 PublicKeyToken=31BF3856AD364E35"/>
    </httpModules>
    
  3. Se o aplicativo for executado em IIS 7.0 Modo integrado, adicionar a UrlRoutingModule classe para o modules elemento, sistema autônomo mostrado no exemplo a seguir:

    <system.webServer>
      <modules>
        <remove name="UrlRoutingModule" />
        <add name="UrlRoutingModule" 
             type="System.Web.Routing.UrlRoutingModule, 
                   System.Web.Routing, 
                   Version=3.5.0.0, 
                   Culture=neutral, 
                   PublicKeyToken=31BF3856AD364E35"/>
      </modules>
    </system.webServer>
    
  4. Se o aplicativo for executado em IIS 7.0 Modo integrado, adicionar a UrlRoutingHandler classe para o handlers elemento, sistema autônomo mostrado no exemplo a seguir:

    <system.webServer>
      <handlers>
        <add name="UrlRoutingHandler" 
             preCondition="integratedMode" 
             verb="*" 
             path="UrlRouting.axd" 
             type="System.Web.HttpForbiddenHandler, 
                   System.Web, Version=2.0.0.0, 
                   Culture=neutral, 
                   PublicKeyToken=b03f5f7f11d50a3a" />
      </handlers>
    </system.webServer>
    

Para criar o manipulador

  1. Crie uma nova classe que implemente a interface IRouteHandler.

  2. Implemente o método GetHttpHandler.Para especificar um formulário da Web específico (arquivo .aspx) sistema autônomo o ponto de extremidade para a solicitação, retornar uma instância desse formulário da Web do GetHttpHandler método.

    O exemplo a seguir mostra uma classe chamada CustomRouteHandler que implementa o IRouteHandler interface. The GetHttpHandler chamadas de método de CreateInstanceFromVirtualPath método para criar uma instância de formulário da Web especificado. Essa instância é retornada sistema autônomo ponto de extremidade para a solicitação.

    Public Class CustomRouteHandler
        Implements IRouteHandler
    
        Private _virtualPath As String
    
        Public Sub New(ByVal vPath As String)
            _virtualPath = vPath
        End Sub
    
        Public Property VirtualPath() As String
            Get
                Return _virtualPath
            End Get
            Private Set(ByVal value As String)
                _virtualPath = value
            End Set
        End Property
    
        Public Function GetHttpHandler(ByVal requestContext _
              As System.Web.Routing.RequestContext) _
              As System.Web.IHttpHandler _
              Implements System.Web.Routing.IRouteHandler.GetHttpHandler
            Dim redirectPage As IHttpHandler
            redirectPage = _
              BuildManager.CreateInstanceFromVirtualPath(VirtualPath, _
              GetType(Page))
            Return redirectPage
        End Function
    End Class
    
    public class CustomRouteHandler : IRouteHandler
    {
        public CustomRouteHandler(string virtualPath)
        {
            this.VirtualPath = virtualPath;
        }
    
        public string VirtualPath { get; private set; }
    
        public IHttpHandler GetHttpHandler(RequestContext 
              requestContext)
        {
            var page = BuildManager.CreateInstanceFromVirtualPath
                 (VirtualPath, typeof(Page)) as IHttpHandler;
            return page;
        }
    }
    

Para registrar o manipulador personalizado

  1. Se aplicativo Web Web ainda não tiver um arquivo global.asax, adicioná-lo.

  2. Adicionar uma diretiva ao arquivo global.asax que importa o System.Web.Routing namespace, conforme mostrado no exemplo a seguir:

    <%@ Import Namespace="System.Web.Routing" %>
    
  3. Criar um método no arquivo global.asax que adiciona as definições de rota para o Routes propriedade das RouteTable classe.

  4. Chamar esse método a partir de Application_Start manipulador de eventos.

    O exemplo a seguir mostra um método que registra uma classe chamada CustomRouteHandler sistema autônomo o manipulador de solicitações que correspondam a bikes/sale.

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        RegisterRoutes(RouteTable.Routes)
    End Sub
    
    Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
        routes.Add("BikeSaleRoute", New Route _
        ( _
           "bikes/sale", New CustomRouteHandler("~/Contoso/Products/Details.aspx") _
        ))
    End Sub
    
    void Application_Start(object sender, EventArgs e) 
    {
        RegisterRoutes(RouteTable.Routes);
    }
    
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.Add("BikeSaleRoute", new Route
        (
           "bikes/sale", 
           new CustomRouteHandler("~/Contoso/Products/Details.aspx")
        ));
    }
    

Consulte também

Conceitos

Roteamento de ASP.NET

Visão Geral sobre Módulos HTTP e Manipuladores HTTP