Pergunta

Estou provavelmente com vista para algo realmente simples aqui, mas eu estou tentando redirecionar todas as URLs ruins para uma ação que filtra o URL com base nas condições e então 301 redireciona para uma página adequada ou questões a página 404.

Para este fim eu tenho uma rota como esta no final da minha tabela de rota:

routes.MapRoute("Error", "{*url}", new { controller = "Main", action = "Error" }); 

E uma ação como esta:

public ActionResult Error(string url)
{
        if (/* Conditions are met... */)
        {
            Response.Status = "301 Moved Permanently";
            Response.AddHeader("Location", /* Destination URL */);
            Response.End();
        }

        Response.StatusCode = 404;
        return View(/* 404 page... */));
}

Isso funciona perfeitamente localmente.

No entanto, quando implantado para IIS6, URLs que não incluem .mvc (por exemplo oldfile.php) nunca são enviados para o processo ASP.NET para o encaminhamento.

Existe uma coisa solução simples / que eu estou com vista?

EDIT: Isto está relacionado com esta questão , porém sob IIS6 URLs sem .mvc não estão sendo enviados para o processamento ASP.NET MVC.

Foi útil?

Solução

Mais do que provável quando implantado no servidor, ASP.Net não está sendo invocado.

Gostaria de mapeamento de curinga configuração no IIS para que seus pedidos vai usar ASP.Net para atender as solicitações.

gerente Abra o IIS, clique com o botão direito seu aplicativo, vá para Propriedades, em seguida, guia Diretório, clique em Configuração. Sob mapas de aplicação de caracteres universais, clique em Inserir (não Adicionar, que é confusamente logo acima), em seguida, digite C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll para “executável” e desmarque Verificar esse arquivo existe.

Para obter mais informações, visite a fonte que me ajudou com este assunto em: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

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