Estou executando o Windows 7 Ultimate (64 bits) usando o Visual Studio 2010 RC. Recentemente, decidi fazer com que o VS execute / depure meus aplicativos no IIS, em vez do servidor de desenvolvimento que o acompanha.
No entanto, sempre que tento executar um aplicativo MVC, recebo o seguinte erro:
Erro HTTP 403.14 - Proibido O servidor Web está configurado para não listar o conteúdo deste diretório. Detalhado
Informações de erro
Módulo DirectoryListingModule
Notification ExecuteRequestHandler
Erro StaticFile do manipulador
Código 0x00000000 solicitado
URL http: // localhost: 80 / mySite /
Caminho físico C: \ myProject \ mySite \
Método de logon Logon anônimo
Usuário anônimo
Coloquei um default.aspx
arquivo no diretório e recebi o seguinte erro:
Erro HTTP 500.21 - O manipulador de erros do servidor interno "PageHandlerFactory-Integrated" possui um módulo incorreto "ManagedPipelineHandler" em sua lista de módulos
Existem outras etapas que esqueci de fazer para que isso funcione?
Notas: Instalei o IIS 7.5 depois de instalar o VS 2010 RC. Usei o botão interno "Criar diretório virtual", na guia "Web", nas "Propriedades" do projeto MVC no Visual Studio 2010. Verifiquei se o aplicativo está usando o pool de aplicativos ASP.NET 4.
Abaixo estão os recursos instalados do IIS que tenho.
_Layout.cshtml
de_PageLayout.cshtml
e tinha feito a mudança correspondente no_ViewStart.cshtml
bem, mas aparentemente isso não foi suficiente. Depois de reverter o nome_Layout.cshtml
, ele começou a funcionar. O que foi confuso foi que_PageLayout.cshtml
foi captado corretamente no Win7 32 bits, mas não no Win7 64 bits ou no WinSvr2K8 R2.Respostas:
O ASP.NET 4 não foi registrado no IIS. Teve que executar o seguinte comando na linha de comando / executar
Windows de 32 bits (x86)
Windows de 64 bits (x64)
Nota do comentário de David Murdoch:
fonte
%windir%\Microsoft.NET\Framework64
diretório e altere o comando adequadamente antes de executar (atualmente é a v4.0.30319).Mais uma coisa para garantir que você possui é o seguinte conjunto no seu web.config:
fonte
runAllManagedModulesForAllRequests
(que é executado até para arquivos estáticos), você pode instalar um hotfix da Microsoft: microsoft.com/download/en/… .Verifique se você possui o seguinte conjunto no seu web.config:
Melhor solução:
Mesmo que a solução acima funcione perfeitamente , ela pode causar outro problema, 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 é desperdício de recursos. Em vez de
Verifique se o atributo preCondition está 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 a postagem original")
fonte
<system.web><httpModules><add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />
,Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config
e parecia ter sido modificado na data da minha instalação do VS 2012. Então, a próxima pergunta é: o que há no meu outro projeto que está permitindo que ele funcione?%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir
recomendado pela solução superior que define os padrões que devem existir no meu dispositivo de desenvolvimento. Esse comando não resolve o problema para mim depois que eu removo a referência UrlRoutingModule.Outro motivo pelo qual alguém pode receber esse erro é se o arquivo Global.asax não estiver mais na pasta raiz.
fonte
global.asax
somente o arquivo é afetado).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 indica isso: http://blogs.msdn.com/b/rjacobs/archive/2010/06/30/system-web-routing-routetable-not-working-with-iis.aspx
fonte
Doce Jesus. Eu tentei todas as coisas acima (mas achei minhas configurações idênticas). AINDA OUTRA SOLUÇÃO, se você estiver tendo problemas:
http://support.microsoft.com/kb/980368
Tente instalar este KB no seu sistema. Se você está vendo 404s, pode ser porque você não possui essa atualização - e o módulo isapi simplesmente não está sendo encontrado e não há muito o que fazer sem isso!
fonte
Também é possível alternar o AppPool para o modo Integrado . Thnx para Michael Bianchi ( https://stackoverflow.com/a/7956546/1143515 ), só quero sublinhar isso.
fonte
Para mim, em uma VM do Azure Server 2012 R2 IIS 8.5 do Azure com um aplicativo Asp.Net MVC 5 (MVC 5 implantado no bin), eu precisava fazer o seguinte em um prompt de cmd elevado, apesar de já ter o 4.5 instalado:
Fonte: http://support.microsoft.com/kb/2736284
Também instalei todos os recursos do IIS com o seguinte PowerShell:
Fonte: http://www.iis.net/learn/install/installing-iis-85/installing-iis-85-on-windows-server-2012-r2
Agora meu aplicativo está funcionando.
fonte
Tivemos uma aplicação MVC movida para um novo servidor. O .NET 4 e o MVC 3 foram instalados, mas ainda recebemos 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 foi simples: o redirecionamento HTTP não foi instalado no servidor.
Gerenciador de servidores - Funções - Servidor Web (IIS) - Serviços de funções - Redirecionamento HTTP: Não instalado. Instalado, problema resolvido.
fonte
Além disso, se seu aplicativo estiver pré-compilado, você deverá ter
PrecompiledApp.config
na pasta raiz do seu aplicativo, caso contrário, você também pode obter
HTTP Error 403.14
.fonte
Outra solução possível, se você mover o seu global.asax, verifique se a marcação aponta para a classe MvcApplication correta. Espero que isso salve alguém no futuro.
fonte
Eu havia usado a Extensão do IIS WebDeploy para importar meus sites do IIS6 para o IIS7.5, portanto, todas as configurações do IIS estavam exatamente como estavam 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 de Clássico para Integrado.
fonte
Eu encontrei o mesmo problema 404.14 de repente. Finalmente, o problema foi corrigido desmarcando "pré-compilar durante a publicação" nas configurações do perfil de publicação.
fonte
Alterei minha rota padrão em um ponto de:
Para:
O que me deu seu erro. Ainda bem que alguém mencionou o roteamento, porque eu provavelmente estaria nisso desde sempre.
fonte
No meu caso, o ASP.NET 4.5 não está instalado no servidor, portanto, a instalação do ASP.NET 4.5 corrigiu o problema.
fonte
Você pode resolver esse erro executando o cmd como administrador do que
Faça o mesmo que na imagem para janelas de 32 bits
Basta fazer alterações em 64 bits como framework64 em vez de apenas framework. Vá para o iis e atualize o site
Se ainda houver algum erro, faça alterações no pool de aplicativos
fonte
Eu tive outro problema que levou a esse problema.
Nenhuma dessas coisas funcionou. Aconteceu 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!
fonte
A interface do usuário é um pouco diferente nas versões mais recentes do Windows Server. Aqui é onde você precisa habilitar o ASP.Net para fazê-lo funcionar no IIS
fonte
Adicionando outra solução para esse problema.
no meu arquivo Global.asax.cs, eu havia desativado as tentativas de arquivos 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 fazer isso no meu aplicativo MVC 3 causou o problema relatado acima.
fonte
Outro motivo para isso acontecer - você é
RouteConfig.cs
ouWebApiConfig.cs
é inválido.No meu caso, eu tinha uma rota definida como tal (observe os parênteses em vez de chaves):
fonte
routes.MapRoute( name:"Default", url:"{controller}/{action}/{repositoryId}", defaults:new { controller = "Account", action = "Login", id = UrlParameter.Optional } );
. Quando eu fixoid = UrlParameter.Optional
emrepositoryId = UrlParameter.Optional
que começar a trabalhar!Observe que para os usuários do Windows 8, você precisa adicionar / remover componentes do Windows e remover a versão do .net reboot e depois reinstalar para registrá-lo no IIS. Presumo que isso aconteça se você obtiver o .net 4.5 do visual studio e instalar o IIS posteriormente.
fonte
Por mais estranho que possa parecer, reinstalar o IIS foi o que funcionou para mim, com o seguinte comando executado de dentro da pasta da versão .net:
Quando executo esse comando, comecei a receber o erro HTTP 403.14. Mas uma vez que executei o comando novamente, ele resolveu o problema.
Obs : Outra coisa que fiz também foi remover o redirecionamento HTTP dos recursos do servidor na tela Gerenciamento de servidor antes de instalar o IIS. Talvez isso também tenha tido um impacto na soluçã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 também funcione para você.
fonte
aspnet_regiis.exe
não instala ou reinstala o IIS, apenas registra uma versão específica do .NET framework, para que possa ser usada pelo IIS para hospedar aplicativos.Para resolver esse problema sem precisar recorrer ao modo de 32 bits, você precisará atualizar o código fonte deste projeto
Eu levantei esse problema como uma discussão no quadro de discussão do projeto codeplex na nuvem de TI.
http://itcloud.codeplex.com/discussions/262000
fonte
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 no Painel de Controle -> Ativar ou desativar os recursos do Windows -> Serviços de Informações da Internet -> Serviços na World Wide Web -> Serviços de Desenvolvimento de Aplicativos, desmarque todas as opções e verifique novamente todas as opções, redefinir o IIS e verifique se o problema está resolvido.
fonte
Se você estiver executando o IIS 8.5 no Windows 8 ou no Server 2012, poderá achar que a execução do mvc 4/5 (.net 4.5) não funciona em um diretório virtual. Se você criar uma entrada de host local no arquivo do host para apontar de volta para a sua máquina local e, em seguida, apontar um novo site do IIS local para essa pasta (com a entrada de cabeçalho de host correspondente), verá que funciona.
fonte
Criei um novo espaço para nome (e, portanto, pasta) idêntico à rota para um controlador (por exemplo,
MvcApp/Test/SomeClasses.cs
eMvcApp/Controllers/TestController.cs
). Isso resultou também em um 403.14!fonte
Para mim, a solução foi adicionar o pacote NuGet Microsoft.AspNet.WebPages (além das dependências do Razor e Infraestrutura) ao meu projeto da web.
A infraestrutura teve que ser reinstalada à força, pois não foi adicionada como referência a princípio.
fonte
No meu caso, a versão da CRL do .NET no pool de aplicativos prppertires foi definida como Sem código gerenciado (não sei por quê). A configuração para .NET CRL versão v4.0.30319 resolveu o problema.
fonte