Ativar a Ligação ao Ambiente de Trabalho Remoto para uma Função no Azure Serviços Cloud (clássico) com o Visual Studio

Importante

Serviços Cloud (clássico) foi preterido para novos clientes e será descontinuado a 31 de agosto de 2024 para todos os clientes. As novas implementações devem utilizar o novo modelo de implementação baseado em Resource Manager do Azure Serviços Cloud (suporte alargado).

O Ambiente de Trabalho Remoto permite-lhe aceder ao ambiente de trabalho de uma função em execução no Azure. Pode utilizar uma ligação ao Ambiente de Trabalho Remoto para resolver e diagnosticar problemas com a sua aplicação enquanto está em execução.

O assistente de publicação que o Visual Studio fornece para serviços cloud inclui uma opção para ativar o Ambiente de Trabalho Remoto durante o processo de publicação, utilizando as credenciais que fornecer. Utilizar esta opção é adequado ao utilizar o Visual Studio 2017 versão 15.4 e anterior.

No entanto, com a versão 15.5 e posterior do Visual Studio 2017, recomenda-se que evite ativar o Ambiente de Trabalho Remoto através do assistente de publicação, a menos que esteja a trabalhar apenas como um único programador. Para qualquer situação em que o projeto possa ser aberto por outros programadores, ative o Ambiente de Trabalho Remoto através do portal do Azure, através do PowerShell ou de um pipeline de versão num fluxo de trabalho de implementação contínua. Esta recomendação deve-se a uma alteração na forma como o Visual Studio comunica com o Ambiente de Trabalho Remoto na VM do serviço cloud, conforme explicado neste artigo.

Configurar o Ambiente de Trabalho Remoto através do Visual Studio 2017 versão 15.4 e anterior

Ao utilizar o Visual Studio 2017 versão 15.4 e anterior, pode utilizar a opção Ativar Ambiente de Trabalho Remoto para todas as funções no assistente de publicação. Ainda pode utilizar o assistente com o Visual Studio 2017 versão 15.5 e posterior, mas não utilize a opção Ambiente de Trabalho Remoto.

  1. No Visual Studio, inicie o assistente de publicação ao clicar com o botão direito do rato no projeto de serviço cloud no Explorador de Soluções e selecionar Publicar.

  2. Inicie sessão na sua subscrição do Azure, se necessário, e selecione Seguinte.

  3. Na página Definições , selecione Ativar Ambiente de Trabalho Remoto para todas as funções e, em seguida, selecione a ligação Definições... para abrir a caixa de diálogo Configuração do Ambiente de Trabalho Remoto .

  4. Na parte inferior da caixa de diálogo, selecione Mais Opções. Este comando apresenta uma lista pendente na qual cria ou escolhe um certificado para que possa encriptar as informações das credenciais ao ligar através do ambiente de trabalho remoto.

    Nota

    Os certificados de que precisa para uma ligação de ambiente de trabalho remoto são diferentes dos certificados que utiliza para outras operações do Azure. O certificado de acesso remoto tem de ter uma chave privada.

  5. Selecione um certificado na lista ou selecione< Criar...>. Se estiver a criar um novo certificado, forneça um nome amigável para o novo certificado quando lhe for pedido e selecione OK. O novo certificado é apresentado na caixa de listagem pendente.

  6. Forneça um nome de utilizador e uma palavra-passe. Não pode utilizar uma conta existente. Não utilize "Administrador" como o nome de utilizador da nova conta.

  7. Escolha uma data em que a conta irá expirar e após a qual as ligações do Ambiente de Trabalho Remoto serão bloqueadas.

  8. Depois de fornecer todas as informações necessárias, selecione OK. O Visual Studio adiciona as definições do Ambiente de Trabalho Remoto aos ficheiros e .csdef ao .cscfg projeto, incluindo a palavra-passe encriptada com o certificado escolhido.

  9. Conclua todos os passos restantes com o botão Seguinte e, em seguida, selecione Publicar quando estiver pronto para publicar o seu serviço cloud. Se não estiver pronto para publicar, selecione Cancelar e responda Sim quando lhe for pedido para guardar as alterações. Pode publicar o seu serviço cloud mais tarde com estas definições.

Configurar o Ambiente de Trabalho Remoto ao utilizar o Visual Studio 2017 versão 15.5 e posterior

Com o Visual Studio 2017 versão 15.5 e posterior, ainda pode utilizar o assistente de publicação com um projeto de serviço cloud. Também pode utilizar a opção Ativar Ambiente de Trabalho Remoto para todas as funções se estiver a trabalhar apenas como um único programador.

Se estiver a trabalhar como parte de uma equipa, deve ativar o ambiente de trabalho remoto no serviço cloud do Azure com o portal do Azure ou o PowerShell.

Esta recomendação deve-se a uma alteração na forma como o Visual Studio 2017, versão 15.5 e posterior, comunica com a VM do serviço cloud. Ao ativar o Ambiente de Trabalho Remoto através do assistente de publicação, as versões anteriores do Visual Studio comunicam com a VM através do chamado "plug-in RDP". O Visual Studio 2017, versão 15.5 e posterior, comunica com a "extensão RDP" mais segura e flexível. Esta alteração também se alinha com o facto de os métodos portal do Azure e PowerShell para ativar o Ambiente de Trabalho Remoto também utilizarem a extensão RDP.

Quando o Visual Studio comunica com a extensão RDP, transmite uma palavra-passe de texto simples através de TLS. No entanto, os ficheiros de configuração do projeto armazenam apenas uma palavra-passe encriptada, que só pode ser desencriptada em texto simples com o certificado local que foi originalmente utilizado para encriptá-la.

Se implementar sempre o projeto de serviço cloud a partir do mesmo computador de desenvolvimento, esse certificado local estará disponível. Neste caso, ainda pode utilizar a opção Ativar Ambiente de Trabalho Remoto para todas as funções no assistente de publicação.

No entanto, se o utilizador ou outros programadores quiserem implementar o projeto de serviço cloud a partir de computadores diferentes, esses outros computadores não terão o certificado necessário para desencriptar a palavra-passe. Como resultado, verá a seguinte mensagem de erro:

Applying remote desktop protocol (RDP) extension.
Certificate with thumbprint [thumbprint] doesn't exist.

Pode alterar a palavra-passe sempre que implementar o serviço cloud, mas essa ação torna-se inconveniente para todas as pessoas que precisam de utilizar o Ambiente de Trabalho Remoto.

Se estiver a partilhar o projeto com uma equipa, é melhor limpar a opção no assistente de publicação e, em vez disso, ativar o Ambiente de Trabalho Remoto diretamente através do portal do Azure ou através do PowerShell.

Implementar a partir de um servidor de compilação com o Visual Studio 2017 versão 15.5 e posterior

Pode implementar um projeto de serviço cloud a partir de um servidor de compilação (por exemplo, com o Azure DevOps Services) no qual o Visual Studio 2017 versão 15.5 ou posterior está instalado no agente de compilação. Com esta disposição, a implementação ocorre a partir do mesmo computador no qual o certificado de encriptação está disponível.

Para utilizar a extensão RDP dos Serviços de DevOps do Azure, inclua os seguintes detalhes no pipeline de compilação:

  1. Inclua /p:ForceRDPExtensionOverPlugin=true nos seus argumentos MSBuild para se certificar de que a implementação funciona com a extensão RDP em vez do plug-in RDP. Por exemplo:

    msbuild AzureCloudService5.ccproj /t:Publish /p:TargetProfile=Cloud /p:DebugType=None
        /p:SkipInvalidConfigurations=true /p:ForceRDPExtensionOverPlugin=true
    
  2. Após os passos de compilação, adicione o passo Implementação do Serviço Cloud do Azure e defina as respetivas propriedades.

  3. Após o passo de implementação, adicione um passo Azure PowerShell, defina a respetiva propriedade Nome a apresentar como "Implementação do Azure: Ativar Extensão RDP" (ou outro nome adequado) e selecione a subscrição do Azure adequada.

  4. Defina Tipo de Script como "Inline" e cole o código abaixo no campo Script Inline . (Também pode criar um .ps1 ficheiro no seu projeto com este script, definir Tipo de Script como "Caminho do Ficheiro de Script" e definir Caminho do Script para apontar para o ficheiro.)

    Param(
        [Parameter(Mandatory=$True)]
        [string]$username,
    
        [Parameter(Mandatory=$True)]
        [string]$password,
    
        [Parameter(Mandatory=$True)]
        [string]$serviceName,
    
        [Datetime]$expiry = ($(Get-Date).AddYears(1))
    )
    
    Write-Host "Service Name: $serviceName"
    Write-Host "User Name: $username"
    Write-Host "Expiry: $expiry"
    
    $securepassword = ConvertTo-SecureString -String $password -AsPlainText -Force
    $credential = New-Object System.Management.Automation.PSCredential $username,$securepassword
    
    # Try to remote existing RDP Extensions
    try
    {
        $existingRDPExtension = Get-AzureServiceRemoteDesktopExtension -ServiceName $servicename
        if ($existingRDPExtension -ne $null)
        {
            Remove-AzureServiceRemoteDesktopExtension -ServiceName $servicename -UninstallConfiguration
        }
    }
    catch
    {
    }
    
    Set-AzureServiceRemoteDesktopExtension -ServiceName $servicename -Credential $credential -Expiration $expiry -Verbose
    

Ligar a uma Função do Azure com o Ambiente de Trabalho Remoto

Depois de publicar o serviço cloud no Azure e ativar o Ambiente de Trabalho Remoto, pode utilizar o Explorador do Visual Studio Server para iniciar sessão na VM do serviço cloud:

  1. No Explorador de Servidores, expanda o nó do Azure e, em seguida, expanda o nó de um serviço cloud e uma das respetivas funções para apresentar uma lista de instâncias.

  2. Clique com o botão direito do rato num nó de instância e selecione Ligar através do Ambiente de Trabalho Remoto.

  3. Introduza o nome de utilizador e a palavra-passe que criou anteriormente. Tem agora sessão iniciada na sua sessão remota.

Recursos adicionais

Como configurar um Serviços Cloud