No passado, ao publicar projetos, os arquivos eram copiados e colados no diretório do site, ou enviados para o diretório via FTP, mas agora, com o surgimento da integração contínua, operação e manutenção automatizadas, e publicação automatizada, os projetos de publicação também estão mudando a cada dia que passa.
Este artigo descreve como publicar remotamente em um site IIS remoto via VS 2019.
Sistema de Servidor Remoto: Windows Server 2019 64-bit
Configuração do servidor
1. Adicionar IIS, instalar o framework .NET (omitido)
2. Baixar e instalar Web Deploy
O Web Deploy pode ser usado para implantar projetos web local e remotamente no seguinte endereço:O login do hiperlink está visível.
No momento da instalação, selecione"Completo"Após a instalação, você verá o serviço "Web Management Service" no serviço, conforme mostrado na figura abaixo:
Se não estiver instalado, o VS receberá o seguinte erro ao publicar remotamente:
--------------------------- Microsoft Visual Studio --------------------------- Falhou ao conectar ao computador remoto ("xx"). Certifique-se de que o Web Deploy esteja instalado na máquina remota e que o processo necessário ("Web Management Service") seja iniciado. Saiba mais em:https://go.microsoft.com/fwlink/ ... ATION_NOT_REACHABLE。 Não é possível conectar a servidores remotos --------------------------- Tem certeza ---------------------------
3. Instalar "Scripts e Ferramentas de Gerenciamento IIS"
Vá em Selecionar Papéis de Servidor > Web Server (IIS) > Ferramentas Administrativas, depois selecione a função de Scripts e Ferramentas Administrativas IIS, clique em Próximo e instale a função.
4. O IIS permite conexões remotas
Localize o serviço de gerenciamento no IIS e ative conexões remotas, conforme mostrado na imagem a seguir:
(Nota:Abra a porta de entrada 8172 no firewall e no grupo de segurança)
5. Criar um novo site IIS
Crie um novo site chamado test1, como mostrado na figura a seguir:
6. O IIS adiciona usuários administrativos
Adicione um usuário do IIS Manager, como mostrado na imagem a seguir:
Ao mesmo tempo, no site test1, adicione autorização, como mostrado na figura abaixo:
Se você não adicionar autorização, o seguinte erro será reportado ao publicar remotamente:
--------------------------- Microsoft Visual Studio --------------------------- Você se conectou a um computador remoto ("xxx") usando o serviço de gerenciamento web, mas não autorizou. Certifique-se de usar o nome de usuário e senha corretos, que o site ao qual você está conectado já exista e que o usuário cujas credenciais representam tenha acesso ao site. Saiba mais em:https://go.microsoft.com/fwlink/ ... R_USER_UNAUTHORIZED。 O servidor remoto retorna um erro: (401) Não autorizado. --------------------------- Tem certeza --------------------------- Lançamento ASP.NET projeto MVC
Primeiro, crie um novo projeto MVC .NET 4.6.2 asp.net com o nome WebAutomatedDeployment usando VS 2019,
Crie duas novas bibliotecas, e o programa do site faz referência a essas duas bibliotecas ao mesmo tempo. (Crie e faça referência a 2 bibliotecas porque a simulação está mais próxima do projeto oficial)
Tente começar o projeto conforme mostrado abaixo:
Clique com o botão direito no projeto, selecione Publicar, Servidor Web (IIS)-> Web Deployment e preencha as informações do servidor, conforme mostrado na figura a seguir:
Verifique a conexão e o teste passa, como mostrado na imagem a seguir:
Quando tentei publicar, o erro foi o seguinte:
A tarefa de implantação web falhou. ((2020/10/9 11:34:38) Solicitação de processamento de erro no computador remoto. )
(9/10/2020 11:34:38) Solicitação de processamento de erro no computador remoto. O servidor está tendo dificuldades para processar a solicitação. Entre em contato com o administrador do seu servidor para mais detalhes. WebAutomatedDeployment 0 Você pode visualizar erros específicos através do Server Event Viewer, conforme mostrado na figura a seguir:
User: itsvse IP do cliente: xxx
Content-Type: application/msdeploy
Version: 9.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 9.0.3802.0
MSDeploy.Method: Sync
MSDeploy.RequestId: def8d9f7-1a72-4b19-8b75-919f8c6a9604
MSDeploy.RequestCulture: zh-CN
MSDeploy.RequestUICulture: zh-CN
ServerVersion: 9.0.1973.0
Skip: objectName="^configProtectedData$"
Provider: auto, Path: Ocorreu uma exceção de agente de implantação de rastreamento propagada ao cliente. ID do pedido "def8d9f7-1a72-4b19-8b75-919f8c6a9604", carimbo de data e hora do pedido: "2020/10/9 11:51:29". Detalhes do erro:
System.UnauthorizedAccessException: 尝试执行未经授权的操作。 Em System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, nome da cadeia, handle SafeHandle, SecurityInfos securityInformation, proprietário do SecurityIdentifique, grupo SecurityIdentifier, GenericAcl sacl, GenericAcl dacl) em System.Security.AccessControl.NativeObjectSecurity.Persist(Nome da cadeia, HandleSafeHandle, AccessControlSections incluiSections, Object exceptionContext) Em System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections, Object exceptionContext) at Microsoft.Web.Deployment.FileSystemSecurityEx.Persist(String path, Boolean isFile) at Microsoft.Web.Deployment.SetAclProvider.Add(DeploymentObject source, Boolean whatIf) em Microsoft.Web.Deployment.DeploymentObject.Update(SourceDeploymentObject, DeploymentSyncContext syncContext) em Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObjectSourceObject) em Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, fonte do DeploymentObject) em Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DestinationObjectDestinationObject, SourceSourceObject) Em Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable'1 syncPassId, String syncSessionId) at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable'1 passId, String user, String siteName) at Microsoft.Web.Deployment.DeploymentAgent.HandleRequestWorker(DeploymentAgentAsyncData asyncData) at Microsoft.Web.Deployment.DeploymentAgent.HandleRequest(DeploymentAgentAsyncData asyncData) Solução:
Reinicie as ferramentas VS, clique em Publicar, e a imagem a seguir aparecerá:
Confere "Guarde este certificado para futuras sessões em Visual Studia" pode ser resolvido.
Na primeira vez que foi publicado, foi lento porque todos os arquivos precisavam ser enviados para o servidor, como mostrado na figura abaixo:
Tente modificar o arquivo de página Index.cshtml e clique em Republicar, apenas os seguintes 3 arquivos serão atualizados, conforme mostrado na figura abaixo:
Atualize o site e veja que ele foi atualizado, conforme mostrado abaixo:
(Fim)
|