IIS Express fornece erro de acesso negado ao depurar ASP.NET MVC

102

Eu criei um projeto ASP.NET MVC 3 e estou usando o IIS Express como o servidor da web durante o desenvolvimento. Quando tento depurar, recebo a mensagem de erro abaixo.

como isso pode ser resolvido?

Erro de Servidor na '/' Aplicação.

Acesso negado. Descrição: Ocorreu um erro ao acessar os recursos necessários para atender a esta solicitação. O servidor pode não estar configurado para acessar o URL solicitado.

Mensagem de erro 401.2 .: Não autorizado: Falha no logon devido à configuração do servidor. Verifique se você tem permissão para visualizar este diretório ou página com base nas credenciais fornecidas e nos métodos de autenticação ativados no servidor web. Contate o administrador do servidor Web para obter assistência adicional.

Kris-I
fonte
3
você está executando o IISExpress sem privilégios administrativos?
chandmk
2
Então, depois de bater minha cabeça nisso por um tempo, finalmente percebi que era porque o VS não havia definido uma página padrão e, aparentemente, o IISExpress.exe não fornece listas de pastas para tornar isso óbvio.
Mark Allen

Respostas:

113

Se você estiver usando o Visual Studio, também poderá clicar com o botão esquerdo do mouse no projeto no Gerenciador de Soluções e alterar a propriedade Autenticação do Windows para Ativado na janela Propriedades .

Jason
fonte
2
Isso não é específico do Visual Studio 2012, pode ser feito pelo menos no Visual Studio 2010 também.
Loïc Lopes,
5
Trabalhou para mim no VS 2013.
kaybee99
2
Você também precisa desativar a autenticação anônima.
Envolvido em
1
No gerenciador de soluções, clique no nome do projeto sob o nó da solução e, em seguida, alterne para a janela Propriedades, onde você pode ver a propriedade Autenticação do Windows configurada como Ativada
sairfan
1
Não vejo essa configuração em nenhum lugar da janela de propriedades. Estou usando VS 2015.
Mark Bonafe
99

A causa desse problema era o IIS Express não permitindo a autenticação do Windows. Isso pode ser habilitado definindo

<windowsAuthentication enabled="true">

no arquivo applicationhost.config localizado em C: \ Usuários [nome de usuário] \ Documentos \ IISExpress \ config.

Formiga Swift
fonte
19
Visual Studio 2010 e 2012 podem adicionar essa configuração para você, por projeto, para que a configuração global não seja alterada de seu padrão, consulte stackoverflow.com/a/7168308/23566
Robert Claypool
Estou tentando essa configuração, pois também estou recebendo esse erro no VS 2013 esporiadicamente, vamos ver se ajuda, avisarei.
Matt
2
Melhor se você usar% userprofile% \ documents \ iisexpress \ config \ applicationhost.config. O meu foi em D: (obrigado Dan! Danesparza.net/2014/09/… )
Jeramy Rutley
Esta é a única solução que funcionou para mim, muito obrigado!
Mohammad Anini
Tentei isso no VS 2017 e não funcionou. A solução postada por Jason funcionou.
myroslav
73

Usei a resposta de Jason, mas queria esclarecer como entrar nas propriedades.

  1. Selecione o projeto no Solution Explorer

insira a descrição da imagem aqui

  1. F4 para chegar às propriedades (diferente das propriedades do botão direito)
  2. Altere a autenticação do Windows para habilitada

insira a descrição da imagem aqui

Tony L.
fonte
3
Muito obrigado por esclarecer e especificar que são as propriedades F4 que precisam ser alteradas.
PeterDNCO de
1
Obrigado! Eu tive que definir 'Autenticação anônima' para 'Ativado' também.
Mahesh
1
Muito obrigado também!
FunMatters
1
Você é linda.
kosher medusa
1
Estou usando o VS 2015, isso não existe!
Mark Bonafe,
18

Hospedagem no IIS Express: 1. Clique no seu projeto no Solution Explorer para selecionar o projeto. 2. Se o painel Propriedades não estiver aberto, abra-o (F4). 3. No painel Propriedades do seu projeto: a) Defina "Autenticação anônima" como "Desativada". b) Defina "Autenticação do Windows" para "Ativado".

Daniel
fonte
12

No meu caso, tive que abrir o arquivo:

C:\...\Documents\IISExpress\config\applicationhost.config

Eu tinha isso dentro do arquivo:

  <authentication>
  <anonymousAuthentication enabled="true" User="" />

Acabei de remover o User="" parte. Eu realmente não sei como essa coisa chegou lá ... :)

Observação: certifique-se de ter algo assim no final de applicationhost.config:

   .
   .
   .
   <location path="MyCompany.MyProjectName.Web">
        <system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="true" />
                    <windowsAuthentication enabled="false" />
                </authentication>
            </security>
        </system.webServer>
    </location>
</configuration>

Você também pode querer dar uma olhada aqui: https://stackoverflow.com/a/10041779/114029

Agora posso acessar a página de login conforme o esperado.

Leniel Maccaferri
fonte
1
Eu segui seus passos ainda não está funcionando para mim. Se for aberto a partir do vs2010, ele funciona bem, qual é o problema no vs 2013
GANI
@ user1016740 Não tenho certeza porque há uma infinidade de possibilidades / caminhos a seguir para tentar resolver esse problema. As etapas que descrevi aqui resolveram isso no meu ambiente, que considero diferente do seu.
Leniel Maccaferri
8

No meu caso, uma execução anterior do meu aplicativo do VS reservou a URL. Eu poderia ver isso executando em um console:

netsh http show urlacl

para excluir esta reserva, executei isso em um console elevado :

netsh http delete urlacl http://127.0.0.1:10002/

Eu encontrei essas etapas aqui resolveram meu problema.

Estou usando o VS2013

BillDarcy
fonte
Isso é muito útil se você já editou seu applicationhost.config para executar um site em várias portas ao mesmo tempo. Remover as entradas do .config não remove nenhuma reserva no netsh. Obrigado cara.
Dusda 01 de
5

Tive que executar o Visual Studio Administrative Modepara me livrar desse erro.

Serj Sagan
fonte
3

Eu também tive o mesmo problema e finalmente consegui superá-lo.

Solution ExplorerRight click on projectPropertiesWeb tabProject Url

Eu escolhi outro número de porta e tudo ficou bem!

Frogatto
fonte
1

Nenhuma das opções acima funcionou para mim. Isso estava funcionando para mim antes de hoje. Então percebi que estava trabalhando com a criação de uma conexão hospedada em meu laptop e havia compartilhado uma conexão de Internet com minha conexão de rede sem fio.

Para corrigir meu problema:

Vá para Painel de controle> Rede e Internet> Conexões de rede

Clique com o botão direito em qualquer conexão de rede sem fio secundária que você possa ter (a minha se chama Conexão de rede sem fio 2) e clique em 'Propriedades'.

Vá para a guia 'Compartilhamento' na parte superior.

Desmarque a caixa que indica "Permitir que outros usuários da rede se conectem por meio da conexão deste computador à Internet".

Clique em OK> e em Aplicar.

Espero que isto ajude!

Ryan C
fonte
1

Abri meu arquivo web.config e encontrei e removi esta seção:

<authorization>
  <deny users="?" />
</authorization>

e meu site apareceu, mas tem problemas com a autenticação ..

kfn
fonte
Ok, ajudou a resolver o problema, mas agora tenho alguns outros problemas que preciso corrigir.
Jamshaid Kamran
0

Acabei de consertar esse problema exato no IIS EXPRESS, editando o host do aplicativo .config na seção de localização específica a seguir. Eu tinha definido a Autenticação do Windows no Visual Studio 2012, mas quando entrei no XML parecia assim.

a tag de autenticação do Windows precisava ser adicionada abaixo, conforme mostrado.

<windowsAuthentication enabled="true" />

<location path="MyApplicationbeingDebugged">
        ``<system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="false" />
                    <!-- INSERT TAG HERE --> 
                </authentication>
            </security>
        </system.webServer>
</location>
user3507561
fonte
0

Tenho lutado com esse problema ao tentar criar um aplicativo simples para SharePoint usando o provedor hospedado.

Depois de passar por applicationhost.config, na seção, basicAuthentication foi definido como false. Eu mudei para verdadeiro para passar do 401,2 no meu cenário. Existem muitos outros links sobre como localizar o applicationhost.config para IIS Express.

kfrosty
fonte
0

Eu não vi essa resposta "completa" em lugar nenhum; Acabei de ver aquele sobre como alterar os números das portas depois de postar isso, então, meh.

Certifique-se de que nas propriedades do seu projeto no visual studio esse url do projeto não seja atribuído ao mesmo url ou porta que está sendo usado no IIS para quaisquer associações de site.

Estou procurando o "porquê" para isso, mas minha suposição inicial é que tanto o IIS quanto o IIS expresso do Visual Studio usam o mesmo diretório ao criar diretórios virtuais e o Visual Studio só pode criar novos diretórios virtuais e não pode modificar qualquer um que o IIS criou ao aplicar suas ligações ao site.

sinta-se à vontade para me corrigir sobre o porquê.

user1040975
fonte
0

Nossa página de erro estava atrás da página de login, mas a página de login tinha um erro em um dos controles, o que cria um loop infinito.

Removemos todos os controles da página ofensiva e os adicionamos novamente um por um até que o controle correto fosse localizado e corrigido.

Atron Seige
fonte
0

No meu caso (aplicativo ASP.NET MVC 4), o Global.asaxarquivo estava faltando. Ele estava aparecendo no Solution Explorer com um ponto de exclamação. Substituí-o e o erro foi embora.

Moses Machua
fonte