Eu tenho esta seção no meu web.config:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<security>
<authentication>
<anonymousAuthentication enabled="true" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
O IIS7 trava e reclama sobre a seção de autenticação:
Módulo AnonymousAuthenticationModule
Notification
Manipulador AuthenticateRequest StaticFile
Código de erro 0x80070021
Erro de configuração Esta seção de configuração não pode ser usada neste caminho. Isso acontece quando a seção está bloqueada no nível pai. O bloqueio é por padrão (overrideModeDefault = "Negar") ou configurado explicitamente por uma tag de local com overrideMode = "Negar" ou pelo legado allowOverride = "false".
Config Source
69: <authentication>
70: <anonymousAuthentication enabled="true" />
Portanto, a maneira usual de resolver isso é entrar %windir%\system32\inetsrv\config\applicationHost.config
e desbloquear a seção:
<sectionGroup name="system.webServer">
<sectionGroup name="security">
<section name="access" overrideModeDefault="Deny" />
<section name="applicationDependencies" overrideModeDefault="Deny" />
<sectionGroup name="authentication">
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
<section name="basicAuthentication" overrideModeDefault="Allow" />
<section name="clientCertificateMappingAuthentication" overrideModeDefault="Allow" />
<section name="digestAuthentication" overrideModeDefault="Allow" />
<section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Allow" />
<section name="windowsAuthentication" overrideModeDefault="Allow" />
</sectionGroup>
(alternativamente appcmd unlock config
).
O estranho: eu fiz isso e ainda reclama.
Procurei locais (MVC é o nome do meu site que é a raiz de todos os sites que estou usando):
<location path="MVC" overrideMode="Allow">
<system.webServer overrideMode="Allow">
<security overrideMode="Allow">
<authentication overrideMode="Allow">
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</location>
Ainda explode. Estou confuso sobre o porquê disso acontecer. Não consigo removê-lo do web.config, quero encontrar o problema raiz.
Existe uma maneira de obter informações específicas do IIS, que regra está me negando?
Editar: Consegui consertar isso usando o console de gerenciamento do IIS7, indo até a raiz (minha máquina) e clicando em "Editar configuração" e desbloqueando a seção lá. Ainda assim, gostaria de saber se existe uma maneira melhor, pois não consigo encontrar o arquivo que ele realmente modifica.
fonte
Respostas:
Resolvemos estas etapas que corrigem o problema para mim:
system.webServer/security/authentication/anonymousAuthentication
system.webServer/security/authentication/windowsAuthentication
fonte
>%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/security/authentication/windowsAuthentication
Isso resolveu meu erro no Windows Server 2012, IIS 8.5. Também deve funcionar para outras versões.
.NET Extensibility 4.5
eASP>NET 4.5
, ambas as entradas ISAPINET 3.5
,.NET 4.5
,ASP.NET 4.5
Web Server (all)
,Management Tools (IIS Management Console and Management Service)
,Windows
fonte
O bloqueio da configuração pode ocorrer em:
Applicationhost.config (string de configuração: MACHINE / WEBROOT / APPHOST)
um arquivo Web.config do Site (MACHINE / WEBROOT / APPHOST / Nome do Site)
Qualquer arquivo web.config do aplicativo que (MACHINE / WEBROOT / APPHOST / Nome do site / Nome do aplicativo)
Bloquear uma seção (seção: seção de configuração do IIS, por exemplo
<asp>
) permite negar a capacidade de definir essas configurações para qualquer pessoa em um nível inferior na hierarquia que você.O uso da delegação de recursos da GUI não está errado e faz uma coisa muito semelhante ao que o AppCMD faz, oculto - define OverrideMode para uma determinada seção em uma
<location>
tag em qualquer nível de configuração em que você esteja focado.O APPCMD pode ser usado para desbloquear arquivos, mas preste atenção no local em que ele está fazendo - não é tão inteligente quanto a GUI sobre isso.
A adição
-commit:apphost
ao final do seuAPPCMD UNLOCK
comando tem como destino Applicationhost.config, que é o arquivo-chave da operação do IIS (substitui a metabase de versões anteriores; armazena todas as configurações centralizadas, mas permite substituições (se você o fizer) nos arquivos web.config).Sem -commit: apphost, o APPCMD terá como alvo o ponto lógico mais próximo de um arquivo web.config - seja no nível do site ou do aplicativo, e indica que foi alterada a configuração usando uma cadeia de configuração como a definida acima. (Além disso: você ainda pode segmentar apenas as configurações nos sub sites, mas comprometa-se com o apphost - ele usa tags de localização para fazer isso)
Portanto, se disser (paráfrase de memória) "Alterações confirmadas em MACHINE / WEBROOT / APPHOST", isso significaria o nível superior da hierarquia do IIS.
Se ele diz "comprometido com o site MACHINE / WEBROOT / APPHOST / Dodgy", isso significa que procurou o caminho físico por trás do site Dodgy e escreveu um arquivo web.config (ou atualizou) nesse local.
fonte
Se você estiver usando o IISExpress e o Visual Studio 2015, o arquivo
applicationHost.config
será armazenado$(solutionDir).vs\config\applicationhost.config
(graças à resposta da Nime Cloud ).Apenas mude
overrideModeDefault="Allow"
sempre que apropriado.fonte
Tente em seu pool de aplicativos, desabilite o suporte a aplicativos de 32 bits Gerenciador do IIS -> pools de aplicativos -> selecione [Your AppPool] -> configurações avançadas -> ativar aplicativos de 32 bits - altere para 'False'
fonte
Dê uma olhada no IIS - esta seção de configuração não pode ser usada neste caminho (bloqueio de configuração?)
A resposta aceita funcionou perfeitamente para mim no Windows 10, ele instrui a fazer o seguinte:
fonte