Até agora não havia uma forma de configurar o ASP.Net Routing com o Web.config (ao menos que eu soubesse). Até agora, fazia-se assim:

Public Class GlobalApplication
    Inherits System.Web.HttpApplication

    Shared Sub RegisterRoutes(ByVal routes As RouteCollection)

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

         MapRoute takes the following parameters, in order:
         (1) Route name
         (2) URL with parameters
         (3) Parameter defaults
        routes.MapRoute( _
            "Default", _
            "{controller}/{action}/{id}", _
            New With {.controller = "Home", .action = "Index", .id = ""} _
        )

    End Sub

    Sub Application_Start()
        RegisterRoutes(RouteTable.Routes)
    End Sub
End Class

Então fiz algo aqui para ajudar. Criei um assembly para permitir a configuração. No web.config fica assim:

  <gb.aspnetrouting>
    <routing>

      <routes>
        <!--<route routeName="name of the route" 
           url="the url" 
           routeHandler="some 
           route handler" />-->
        <route routeName="DefaultMvc" 
           url="{controller}/{action}/{id}" 
           routeHandler="MvcRouteHandler">
          <defaults>
            <default name="action" value="index" 
               type="System.String, mscorlib"/>
            <default name="id" value="" 
               type="System.String, mscorlib"/>
          </defaults>
          <constraints>
            <constraint name="basic" 
               value="[^\.]*" 
               type="System.String, mscorlib"/>
          </constraints>
          <dataTokens>
            <dataToken name="someData" 
            value="I'm a data token" type="System.String, mscorlib"/>
          </dataTokens>
        </route>
      </routes>

      <ignoredRoutes>
        <ignoredRoute url="{resource}.axd/{*pathInfo}" />
      </ignoredRoutes>

      <routeHandlers>
        <routeHandler name="MvcRouteHandler" 
           type="System.Web.Mvc.MvcRouteHandler, System.Web.Mvc"/>
      </routeHandlers>

    </routing>
  </gb.aspnetrouting>

E no Global.asax, fica assim:

Public Class GlobalApplication
    Inherits System.Web.HttpApplication

    Shared Sub RegisterRoutes(ByVal routes As RouteCollection)

        GB.RoutingConfig.RoutingConfiguration.Configure( _
           "~/web.config", routes)

    End Sub

    Sub Application_Start()
        RegisterRoutes(RouteTable.Routes)
    End Sub
End Class

 

No Global.asax existe apenas uma chamada ao método de configuração. Tirei a idéia do que já existe hoje no .Net Remoting, que possui chamada de configuração semelhante.

Já no web.config, você pode configurar as rotas, com Constraints, Defaults e DataTokens, o gerenciador de rota (que no MVC é sempre o MvcRouteHandler), e as rotas ignoradas. Até o time do MVC lançar o deles vou usar esse para ajudar. E parece que vai ser bem para frente, já que eles já disseram que vão focar em features, por enquanto.

Quem quiser baixar, pegue aqui a dll compilada, e aqui o código fonte. Fiquem à vontade para melhorar, e me dêem notícia se funcionou para vocês e se gostaram.

Já adianto que não é o assembly mais testado no mundo, então ele tem somente a seguinte garantia: "roda na minha máquina". Espero que na de vocês também rode, e deve rodar, mas não garanto que está livre de bugs, já que foi mais um exercício do que a construção de um módulo, ok?


Postado na(s) categoria(s) ASP.Net Routing pelo giovanni bassi em 20 de julho de 2008 às 22:50 | Tags: ,

Ninguém avaliou. Dê sua nota!

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Comentar


(Vai mostrar seu Gravatar)  

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading



Quem é Giovanni Bassi

Giovanni Bassi Sou uma pessoa apaixonada por tecnologia e especificamente por .Net. Gerencio uma fábrica de software, gosto muito de arquitetura e engenharia de software, publico artigos e edito a .Net Magazine. Dou umas palestras e cursos de vez em quando, e quando dá tempo eu respiro um pouco. Mais detalhes nesta página.

Selos

Web Days 2008

MCPD

MCSD

.Net Magazine

Calendário

«  agosto 2008  »
seteququsedo
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567
Ver detalhamento de posts no calendário

Postagens recentes

Comentários recentes

Disclaimer / Aviso
As opiniões colocadas neste blog são minhas e pessoais e não expressam necessariamente as opiniões de meus empregadores, pareceiros e amigos. Da mesma forma, os comentários feitos por leitores do blog não expressam a minha opinião.

© Copyright 2008 .Net Unplugged
Sign in