Pergunta

Estou executando o Windows 7 Ultimate (64 bits) usando o Visual Studio 2010 RC. Recentemente, decidi ter o VS Run/Debug meus aplicativos no IIS, em vez do servidor de desenvolvimento que o acompanha.

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 deste diretório. Detalhado

Informações de erro

Module DirectoryListingModule

Notificação ExecutErequestHandler

Erro de arquivo estáticos do manipulador

Código 0x00000000 solicitado

Url http: // localhost: 80/mysite/

Caminho físico C: MyProject Mysite

Método de logon Logão anônimo

Usuário anônimo

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

ERRO HTTP 500.21 - Manipulador de erros interno do servidor "PageHandlerFactory -Integrado" tem um módulo ruim "GerencieDPipeLeHandler" em sua lista de módulos

Há outras etapas que esqueci de tomar para fazer isso funcionar?

Notas: Instalei o IIS 7.5 Após a instalação do VS 2010 RC. Usei o botão "Criar diretório virtual" interno na guia "Web" nas "Propriedades" do projeto MVC no Visual Studio 2010. Gostei de que o aplicativo esteja usando o pool de aplicativos ASP.NET 4.

Abaixo estão os recursos instalados do IIS que tenho.

alt text

Foi útil?

Solução

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

Windows de 32 bits (x86)

%windir% microsoft.net framework v4.0.30319 aspnet_regiis.exe -ir

Windows 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 .NET mudou desde que essa resposta foi publicada. Verifique qual versão da estrutura está no diretório %windir % microsoft.net framework64 e altere o comando de acordo antes de executar (atualmente é v4.0.30319)

Outras dicas

Mais uma coisa para garantir que você tenha é o seguinte conjunto em seu web.config:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>

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

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer>

Melhor solução:

Mesmo que a solução acima funcione absolutamente bem, isso pode causar outro problema, pois executa todos os 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 recurso. Em vez de

<system.webServer>
<modules>
  <remove name="UrlRoutingModule-4.0"/>
  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" preCondition="" />
</modules>
</system.webServer>

Verifique se o atributo pré -condição está vazio significa que ele será executado em todas as solicitações. [Consulte Mais informação](http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagagedmodulesfo.html, "Leia o post original")

Outra razão pela qual alguém pode receber esse erro é se o arquivo Global.asax não está 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-ruting--routetable-not-working-with-iis.aspx

Doce Jesus. Eu tentei todas as coisas acima (mas achei minhas configurações idênticas). Mais uma solução se você estiver tendo problemas:

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

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

Também você pode mudar AppPool para Integrado modo. Thnx para Michael Bianchi (https://stackoverflow.com/a/7956546/1143515), Eu só quero sublinhar isso.

Para mim, em um Azure Server 2012 R2 IIS 8.5 VM com um aplicativo ASP.NET MVC 5 (bin implantado MVC 5), tive que fazer o seguinte a partir de um prompt de CMD elevado, embora eu já tenha instalado 4.5:

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

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

Eu também Force Brute, instalei todos os recursos 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. .NET 4 e MVC 3 foram instalados, mas ainda temos “erro 403.14 ″. Nesse caso, isso significava que o IIS não entendeu 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 da Web (IIS) - Serviços de Funções - Redirecionamento HTTP: Não instalado. Instalado, problema resolvido.

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

PrecompiledApp.config

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

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

Eu tinha usado a extensão do IIS WebDeploy para importar meus sites do IIS6 para o IIS7.5, então todas as configurações do IIS eram exatamente como estavam no ambiente de produção. Depois de experimentar todas as soluções fornecidas aqui, nenhuma das quais funcionou para mim, eu simplesmente tive que alterar a configuração do pool de aplicativos para o site do Classic para Integrated.

Eu conheci o mesmo problema 404.14 de repente. Finalmente, o problema foi corrigido desmarcando "pré -compilado durante a publicação" nas configurações de perfil de publicação.

Eu alterei minha rota padrão em um ponto 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" }

O que me deu seu erro. Que bom que alguém mencionou o roteamento porque eu provavelmente estaria nisso para sempre.

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.

Você pode resolver esse erro executando o CMD como administrador do queenter image description here

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

Basta fazer alterações em 64 bits como estrutura64 em vez de estrutura apenas do que ir para o IIS e atualizar o site
Se você ainda tiver algum erro, faça alterações no pool de aplicativos

Eu tive outro problema que levou a esse problema.

  • Eu tinha assegurado que meu pool de aplicativos estava em execução .NET 4 no modo integrado
  • Eu tinha executado aspnet_regiis.exe -i
  • Eu tinha verificado as permissões de pastas foram definidas corretamente para a conta executando meu pool de aplicativos

Nenhuma dessas coisas funcionou. Aconteceu que no meu web.config em System.webserver> Módulos Eu tinha o seguinte:

<remove name="WindowsAuthentication" />

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ê precisa ativar asp.net para fazê -lo funcionar no IIS

Fix IIS & Asp.net

Adicionando outra solução para esse problema.

No meu arquivo global.asax.cs, eu havia desativado os arquivos de PHP de desativar o consumido pelo pipeline do MVC usando o seguinte:

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

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

Mais uma 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 os parênteses em vez de uma cinta encaracolada):

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

Observe para os usuários do Windows 8 que você precisa adicionar/remover componentes do Windows e remover a versão do .NET Reboot e depois reinstale para registrá-lo no IIS. Presumo que isso aconteça se você receber o .NET 4.5 do Visual Studio e instalar o IIS depois.

Por mais estranho que possa parecer, reinstalando o IIS Foi o que funcionou para mim, com o seguinte comando executado de dentro da pasta .NET versão:

aspnet_regiis.exe /i

enter image description here

Quando execute este comando pela primeira vez, comecei a obter o erro HTTP 403.14. Mas depois que eu corri o comando novamente, ele resolveu o problema.

Ob: Outra coisa que fiz também foi remover o redirecionamento do HTTP dos recursos do servidor na tela de gerenciamento do servidor antes de reiinstalar o IIS. Talvez isso também tenha tido um impacto na solução do problema, mas não tenho certeza. Portanto, se a reinstalar o IIS ainda não funcionar, tente remover o redirecionamento do HTTP e tente novamente. Espero que possa funcionar para você também.

Para resolver esse problema sem ter que recorrer ao modo de 32 bits, você terá que atualizar o código -fonte deste projeto

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

Eu levantei essa questão como uma discussão no quadro de discussão no projeto de codeplex de IT Cloud.

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 nem todos estejam registrados corretamente. Para resolver isso, tente desmarcar todas as opções dentro do painel de controle -> ativar ou desativar o Windows -> Serviços de Informação da Internet -> Serviços da World Wide Web -> Recursos de desenvolvimento de aplicativos, desmarque todas as opções e verifique novamente o IIS e o IIS e Verifique se o problema está resolvido.

enter image description here

Se você estiver executando o IIS 8.5 no Windows 8 ou 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 local de host no arquivo host para apontar para sua máquina local e apontar um novo site local do IIS para essa pasta (com a entrada do cabeçalho do host correspondente), você descobrirá que funciona.

Eu criei um novo espaço para nome (e, portanto, pasta) idêntico à rota para um controlador (por exemplo, MvcApp/Test/SomeClasses.cs e MvcApp/Controllers/TestController.cs). Isso resultou também em um 403.14!

Para mim, a solução foi adicionar o pacote NUGET Microsoft.aspnet.webPages (além de dependências de lâmina e infraestrutura) ao meu projeto da Web.

A infraestrutura teve que ser reinstalada com força, pois não foi adicionada como referência a princípio.

No meu caso, a versão .NET CRL no Application Pool prPpertires foi definida como nenhum código gerenciado (não saiba o porquê). Definir -o para .NET CRL Versão v4.0.30319 resolveu o problema.

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