Web.Routing para a raiz do site ou página inicial
-
23-09-2019 - |
Pergunta
Estou trabalhando com Web.Routing, usando-o para ter URLs amigáveis e interfaces semelhantes a Rest para um site que é essencialmente renderizado por um único IHttpHandler.Não há webforms, o manipulador gera todo o html/json e o grava como parte da solicitação do processo.
Isso funciona bem para coisas como /Sites/Accounting, por exemplo, mas não consigo fazê-lo funcionar na raiz do site, ou seja,'/'.
Eu tentei registrar uma rota com uma string vazia, com 'default.aspx' (que é o arquivo aspx vazio que mantenho na minha pasta raiz para funcionar bem com cassini e iis).Eu configurei RouteExistingFiles como false explicitamente, mas tudo o que eu faço ao acessar o URL raiz, ele ainda abre default.axpx, que não tem nenhum código do qual herda, e contém uma tag h1 simples para mostrar que eu o acertei.
Não quero alterar o arquivo padrão para redirecionar para uma rota desejada, apenas quero o equivalente a uma rota 'padrão' que seja aplicada quando nenhuma outra rota for encontrada, semelhante ao MVC.
Para referência, a versão anterior do site não usava Web.Routing, mas tinha um manipulador referenciado no web.config que era perfeitamente capaz de interceptar solicitações para o root ou default.aspx.
Especificações:ASP.NET 3.5sp1, C#, sem webforms, MVC ou openrasta.IHttpHandlers simples e antigos.
Solução
Resolvi meu próprio problema:o problema é o servidor web integrado, Cassini ou algo parecido.Parece que ele não funciona bem com o roteamento e, por padrão, simplesmente retornará o arquivo default.aspx ou, se estiver faltando, mostrará uma listagem de diretórios.
Usar o IIS com um diretório virtual funciona bem, mas é irritante (frustra os compartilhadores de código porque eles precisam configurar novos diretórios virtuais quando abrem meu aplicativo e polui minha própria instância do IIS.Bah.Provavelmente o que farei no momento, ou configurarei um novo aplicativo manualmente para que eu possa usar o caminho somente do host de domínio, como o que existirá ao vivo.
Uma alternativa é usar a versão atualizada da Cassini, vista aqui, que funciona se o arquivo default.aspx estiver faltando, mas ainda não descobri como integrá-lo ao visual studio.Qualquer ajuda seria apreciada, mas não é uma grande prioridade, visto que tenho soluções alternativas.
Outras dicas
Sei que este é um post muito antigo, mas acabei de encontrar o mesmo problema ao usar o VS2012, então estou postando aqui apenas para garantir.
Resolvi o problema instalando IIS Expresso e configurar o projeto para usar o IIS Express no Visual Studio.Resolveu o problema.