Eu sou muito novo para MVC e Routing e me pediram para modificar um aplicativo para usar URLs diferentes. uma tarefa que é um pouco sobre mim desde que eu não tenho experiência.
ok, vamos falar um pouco de código:
routes.MapRoute( "CategoryBySeName", // Route name "products/{SeName}", // URL with parameters new { controller = "Catalog", action = "CategoryBySeName" } );
isso funciona como esperado, mas depois o cliente queria “.html” no final dos caminhos, então eu mudei:
"products/{SeName}", // URL with parameters
para:
"products/{SeName}.html", // URL with parameters
que falha (página IIS 404 – MapRequestHandler) parece que está tentando carregar um arquivo físico com esse nome em vez de passá-lo para o aplicativo.
Semelhante: Roteamento ASP.NET MVC para iniciar na página html (não respondida, não duplicada)
Você está supondo que um manipulador do IIS provavelmente está pegando a solicitação antes que o MVC esteja correto.
Supondo que o IIS 7: http://technet.microsoft.com/en-us/library/cc770990(v=ws.10).aspx
Você precisa editar o manipulador .html no IIS para usar o ASP.NET.
Você pode encontrá-lo nas propriedades do site na guia do diretório inicial na configuração do aplicativo na seção de mapeamentos do II6.
Algo ao longo das linhas de (versão pode ser diferente): C: \ windows \ microsoft.net \ framework \ v4.0.30319 \ aspnet_isapi.dll é o que você precisa para lidar com os arquivos .html.
Você tem que forçar todos os pedidos através do pipeline do ASP.NET, e você pode fazer isso adicionando apenas esta única linha ao web.config do seu aplicativo:
A alteração do pool de aplicativos do Classic para o Integrated corrigiu o problema. obrigado mano por sua ajuda.
Basta adicionar esta seção ao Web.config e todas as solicitações para a rota / {* pathInfo} serão tratadas pelo manipulador especificado, mesmo quando houver pontos em pathInfo. (retirado do exemplo do ServiceStack MVC Host Web.config e desta resposta https://stackoverflow.com/a/12151501/801189 )