ASP.NET MVC no IIS 7.5

Estou executando o Windows 7 Ultimate (64 bits) usando o Visual Studio 2010 RC. Eu recentemente decidi fazer com que o VS execute / depure meus aplicativos no IIS em vez do servidor de desenvolvimento que vem com ele.

No entanto, toda vez que tento executar um aplicativo MVC, recebo o seguinte erro:

Erro HTTP 403.14 – Proibido O servidor da Web está configurado para não listar o conteúdo desse diretório. Detalhado

Informação de erro

Módulo DirectoryListingModule

Notificação ExecuteRequestHandler

Erro StaticFile do manipulador

Código 0x00000000 solicitado

URL http: // localhost: 80 / mySite /

Caminho Físico C: \ myProject \ mySite \

Logon Logon Anônimo do Método de Logon

Usuário anônimo

default.aspx um arquivo default.aspx no diretório e recebi o seguinte erro:

HTTP Error 500.21 – Manipulador de Erros do Servidor Interno “PageHandlerFactory-Integrated” possui um módulo incorreto “ManagedPipelineHandler” em sua lista de módulos

Há outros passos que esqueci de fazer para que isso funcione?

Notas: Eu instalei o IIS 7.5 depois de instalar o VS 2010 RC. Usei o botão “Criar diretório virtual” interno na guia “Web” das “Propriedades” do projeto MVC no Visual Studio 2010. Certifiquei-me de que o aplicativo estivesse usando o Pool de aplicativos do ASP.NET 4.

Abaixo estão os resources instalados do IIS que eu tenho.

texto alternativo

O ASP.NET 4 não foi registrado no IIS. Tive que executar o seguinte comando na linha de comando / executar

32 bits (x86) do Windows

% windir% \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -ir

Janelas de 64 bits (x64)

% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -ir

Nota do comentário de David Murdoch:

Que a versão do .net mudou desde que esta resposta foi publicada. Verifique qual versão do framework está no diretório% windir% \ Microsoft.NET \ Framework64 e altere o comando de acordo antes de executar (atualmente é v4.0.30319)

Só mais uma coisa para ter certeza que você tem é o seguinte conjunto no seu web.config:

    

Certifique-se de ter o seguinte conjunto no seu web.config:

    

Melhor solução:

Embora a solução acima funcione absolutamente bem , ela pode causar outros problemas, pois executa todos os seus módulos HTTP registrados em todas as solicitações (mesmo em todas as solicitações de .jpg .gif .css .html .pdf etc) e é obviamente um desperdício de resources. Em vez de

       

Certifique-se de que o atributo preCondition esteja vazio significa que ele será executado em todas as solicitações. [Leia mais] ( http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html , “Leia o post original”)

Outra razão pela qual alguém pode receber este erro é se o arquivo Global.asax não estiver mais na pasta raiz.

Eu também estava recebendo esse erro e descobri que “Redirecionamento HTTP” não estava ativado no Windows Server. Esta postagem do blog também aponta isso: http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx

Doce Jesus Eu tentei todas as coisas acima (mas encontrei minhas configurações idênticas). AINDA OUTRA SOLUÇÃO se você está tendo problemas:

http://support.microsoft.com/kb/980368

Tente instalar este KB para o seu sistema. Se você está vendo 404s, pode ser porque você não tem essa atualização – e o módulo isapi não está sendo encontrado e não há muita coisa que você possa fazer sobre isso sem isso!

Você também pode alternar o AppPool para o modo Integrado . Thnx para Michael Bianchi ( https://stackoverflow.com/a/7956546/1143515 ), eu só quero sublinhar isso.

Para mim em uma VM do IIS 8.5 do Azure Server 2012 R2 com um aplicativo Asp.Net MVC 5 (bin MVC 5 implantado) eu tive que fazer o seguinte a partir de um prompt de cmd elevado, embora eu já tivesse 4.5 instalado:

 dism /online /enable-feature /featurename:IIS-ASPNET45 

Fonte: http://support.microsoft.com/kb/2736284

Eu também força bruta instalado todos os resources do IIS com o seguinte PowerShell:

 import-module servermanager add-windowsfeature web-server -includeallsubfeature 

Fonte: http://www.iis.net/learn/install/installing-iis-85/installing-iis-85-on-windows-server-2012-r2

Agora meu aplicativo está funcionando.

Tivemos um aplicativo MVC movido para um novo servidor. O .NET 4 e o MVC 3 foram instalados, mas ainda temos o “Erro 403.14”. Nesse caso, isso significava que o IIS não entendia que estava lidando com um aplicativo MVC, estava procurando a página padrão.

A solução era simples: o Redirecionamento HTTP não estava instalado no servidor.

Gerenciador de Servidores – Funções – Servidor Web (IIS) – Serviços de Funções – Redirecionamento HTTP: Não instalado. Instalado, problema resolvido.

Além disso, se seu aplicativo for pré-compilado, você deve ter

PrecompiledApp.config

na pasta raiz do seu aplicativo, caso contrário, você também pode obter o HTTP Error 403.14 .

Outra solução possível, se você mover seu global.asax, verifique se a marcação aponta para a class MvcApplication correta. Espero que isso salve alguém no futuro.

Eu usei a Extensão IIS do WebDeploy para importar meus sites do IIS6 para o IIS7.5, portanto, todas as configurações do IIS eram exatamente como eram no ambiente de produção. Depois de tentar todas as soluções fornecidas aqui, nenhuma delas funcionou para mim, eu simplesmente tive que alterar a configuração do Pool de aplicativos do site do Classic para o Integrated.

Eu encontrei o mesmo problema 404.14 de repente. Finalmente, o problema foi corrigido desmarcando “pré-compilar durante a publicação” nas configurações de perfil de publicação.

Eu alterei minha rota padrão em um ponto a partir de:

 routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } 

Para:

 routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index" } 

Qual me deu seu erro. Fico feliz que alguém tenha mencionado o roteamento porque eu provavelmente estaria nisso para sempre.

No meu caso, o ASP.NET 4.5 não está instalado no servidor, então a instalação do ASP.NET 4.5 corrigiu o problema.

Você pode resolver esse erro executando cmd como admin insira a descrição da imagem aqui

Faça o mesmo que na foto para o Windows 32 bits

Basta fazer alterações em 64 bits como framework64 em vez de apenas para o framework Do que ir para o iis e atualizar o site
Se você ainda tem algum erro fazer alterações no pool de aplicativos

Eu tive outro problema que levou a esse problema.

  • Eu tinha assegurado que meu pool de aplicativos estava funcionando .net 4 no modo integrado
  • Eu tinha executado o aspnet_regiis.exe -i
  • Eu verifiquei se as permissions de pasta foram definidas corretamente para a conta que está executando meu pool de aplicativos

Nenhuma dessas coisas funcionou. Descobri que no meu web.config em system.webserver> modules eu tinha o seguinte:

  

Obviamente, isso removeu o módulo de autenticação do Windows, que parecia de alguma forma derrubar tudo.

Espero que isso ajude alguém, pois isso me custou a maior parte da noite!

A interface do usuário é um pouco diferente nas versões mais recentes do Windows Server. Aqui é onde você tem que habilitar o ASP.Net para fazê-lo funcionar no IIS

Corrigir IIS e Asp.net

Adicionando outra solução para esse problema.

no meu arquivo Global.asax.cs eu tinha desabilitado arquivos tentativa de php de serem consumidos pelo pipeline MVC usando o seguinte:

routes.IgnoreRoute( "{*php}" );

Eu tinha feito isso anteriormente em um projeto MVC2 e funcionou bem, mas isso no meu aplicativo MVC 3 causou o problema relatado acima.

Ainda outra razão pela qual isso pode acontecer – seu RouteConfig.cs ou WebApiConfig.cs são inválidos.

No meu caso, eu tinha uma rota definida como tal (observe o parêntese ao invés da chave):

 ... routeTemplate: "api/(something}" ... 

Observe que para usuários do Windows 8 você precisa adicionar / remover componentes do Windows e remover a versão de reboot do .net e reinstalá-lo para registrá-lo no IIS. Eu presumo que isso aconteça se você obtiver o .net 4.5 do visual studio e instalar o IIS posteriormente.

Por mais estranho que pareça, reinstalar o IIS foi o que funcionou para mim, com o seguinte comando executado de dentro da pasta de versão .net:

 aspnet_regiis.exe /i 

insira a descrição da imagem aqui

Quando eu iniciei este comando pela primeira vez, comecei a receber o erro HTTP 403.14. Mas uma vez que eu executei o comando novamente, resolvi o problema.

Obs : Outra coisa que também fiz foi remover o HTTP Redirect dos resources do servidor na canvas Server Management antes de reinstalar o IIS. Talvez isso também tenha tido um impacto na resolução do problema, mas não tenho certeza. Portanto, se a reinstalação do IIS ainda não funcionar, tente remover o Redirecionamento HTTP e tente novamente. Espero que isso possa funcionar para você também.

Para resolver este problema sem ter que recorrer ao modo de 32 bits, você terá que atualizar o código fonte para este projeto.

 public static void RegisterUrlRoutesFromAttributes(RouteCollection routes) { // Enumerate assembly for UrlRoute attributes. List routeParams = new List(); AppDomain.CurrentDomain.GetAssemblies() .ToList() .ForEach(assembly => routeParams.AddRange(GetRouteParamsFromAttributes(assembly))); 

Eu levantei essa questão como uma discussão sobre o quadro de discussão no projeto de código de nuvem de TI.

http://itcloud.codeplex.com/discussions/262000

Isso funcionou para mim e pode ser útil para outro.

Talvez todos os componentes necessários não estejam presentes ou / e nem todos estejam registrados corretamente. Para resolver isso, tente desmarcar todas as opções dentro do Painel de Controle -> Ativar ou desativar resources do Windows -> Serviços de Informações da Internet -> Serviços da World Wide Web -> Recursos de Desenvolvimento de Aplicativos, desmarque todas as opções e verifique novamente tudo e redefina o IIS verifique se o problema foi resolvido.

insira a descrição da imagem aqui

Se você estiver executando o IIS 8.5 no Windows 8 ou Server 2012, talvez descubra que executar o mvc 4/5 (.net 4.5) não funciona em um diretório virtual. Se você criar uma input de host local no arquivo de host para apontar de volta para sua máquina local e, em seguida, apontar um novo site IIS local para essa pasta (com a input de header de host correspondente), verá que ela funciona.

Eu criei um novo namespace (e, portanto, pasta) idêntico ao caminho para um controlador (por exemplo, MvcApp/Test/SomeClasses.cs e MvcApp/Controllers/TestController.cs ). Isso também resultou em um 403.14!

Para mim, a solução foi adicionar o pacote NuGet Microsoft.AspNet.WebPages (além das dependencies do Razor e Infrastructure) ao meu projeto da web.

A infraestrutura teve que ser reinstalada à força, já que não foi adicionada como referência no início.

No meu caso, o .NET CRL Version nos prppertires do Pool de aplicativos foi definido como No managed code (não sei por que). Configurá-lo para .NET CRL Version v4.0.30319 resolveu o problema.