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
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"/>
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>
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>
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
Crie uma nova classe que implemente a interface IRouteHandler.
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
Se aplicativo Web Web ainda não tiver um arquivo global.asax, adicioná-lo.
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" %>
Criar um método no arquivo global.asax que adiciona as definições de rota para o Routes propriedade das RouteTable classe.
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") )); }