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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top