Estou tentando pegar o nome de usuário do windows ao depurar no Visual Studio 2013. Estou simplesmente usando:
httpcontext.current.user.identity.name
Se eu executar isso no meu Dev Server, ele funcionará bem, se eu executar no modo de depuração em qualquer versão anterior do Visual Studio, também funcionará bem.
Meu problema é - se eu executar isso no Visual Studio 2013, recebo uma string vazia.
Minha configuração da web é a seguinte.
<system.web>
<authentication mode="Windows"/>
<identity impersonate="false"/>
<authorization>
<allow users="*"/>
</authorization>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
<customErrors mode="Off"/>
</system.web>
Enquanto estava pesquisando, encontrei minha resposta, mas não consigo encontrar a resposta na internet, então pensei em compartilhar isto:
Corrigi meu problema modificando meu arquivo applicationhost.config. Meu arquivo foi salvo na pasta "\ Meus Documentos \ IISExpress \ config".
Parece que o VS2013 estava ignorando meu arquivo web.config e aplicando métodos de autenticação diferentes.
Tive que modificar esta parte do arquivo para ficar parecido com o abaixo. Na verdade, eu apenas modifiquei anonymousAuthentication para false e o modo windowsAuthentication para true.
fonte
anonymousAuthentication
. É suficiente ligarwindowsAuthentication
. Essas configurações controlam quais mecanismos de autenticação os sites têm permissão para usar.No Visual Studio 2013 E VS15 (mas acho que é o mesmo para todas as outras versões), basta pressionar F4 e alterar essas duas propriedades: - Autenticação anônima: Desativar - Autenticação do Windows: Ativar
fonte
No VS2013 F4 em seu projeto para visualizar a janela de propriedades, desabilitar o acesso anônimo e habilitar a "autenticação do Windows"
Então vai funcionar. Não há necessidade de mudar mais nada
fonte
O VS 2015 muda isso. Ele adicionou uma pasta .vs ao meu projeto da web e o applicationhost.config estava lá. Fiz as alterações sugeridas (autenticação da janela = verdadeiro, anon = falso) e ele começou a entregar um nome de usuário em vez de um espaço em branco.
fonte
Abra o arquivo applicationHost.config localizado na pasta C: \ Users [userid] \ Documents \ IISExpress \ config. Dentro desse arquivo, altere overrideModeDefault de anonymousAthentication e windowsAuthentication para "Permitir"
Em seguida, altere lockItem para "false" para AnonymousAuthenticationModule e WindowsAuthenticationModule
Fazer essas alterações permitirá que as configurações da web existentes substituam o que está no arquivo applicationHost para IIS Express.
fonte
Você também pode modificar as propriedades do seu projeto da web, escolher "Web" nas guias à esquerda e alterar a lista suspensa Servidores para "IIS local". Crie um novo diretório virtual e use o gerenciador IIS para configurar seu pool de sites / aplicativos conforme desejado.
Eu prefiro esse método, pois você normalmente tem um diretório v (ou site) do IIS local para testar localmente. Você não afetará nenhum outro site dessa maneira.
fonte
Parece que a resposta certa foi fornecida pelo usuário 3149240 acima. No entanto, como Neil Watson apontou, o arquivo applicationhost.config está em jogo aqui.
As alterações podem ser feitas no painel de propriedades do VS ou no arquivo, embora em um local diferente. Perto da parte inferior do arquivo applicationhost.config está um conjunto de elementos de localização. Cada aplicativo para IIS Express parece ter um desses. Alterar as configurações na IU atualiza esta seção do arquivo. Portanto, você pode alterar as configurações por meio da IU ou modificar este arquivo.
Aqui está um exemplo com autenticação anônima desativada e autenticação do Windows ativada:
Isso é equivalente na interface do usuário do VS a:
fonte
F4 nem sempre me leva a este painel. Além disso, costuma-se dizer que uma imagem vale mais que mil palavras.
fonte