zoukankan      html  css  js  c++  java
  • 【实战】使用 VS 2019 将项目发布到远程 IIS 服务器

    在以往发布项目的时候,都是将文件复制粘贴到站点目录,或者通过ftp上传到站点目录,现在随着持续集成、自动化运维、自动化发布的出现,发布项目也在日新月异。

    本文介绍,如何通过 vs 2019 远程发布到远程 iis 站点下。

    远程服务器系统:Windows Server 2019 64 位

    服务器配置

    1.添加 iis,安装 .net 框架(略)

    2.下载安装 Web Deploy

    Web Deploy 可以用于本地和远程部署Web项目,地址:https://www.iis.net/downloads/microsoft/web-deploy



    在安装的时候,选择“完整”安装,安装完成后,会在服务中看到“Web Management Service”服务,如下图:



    如果未安装,在远程发布的时候,vs 会报错如下:

    ---------------------------
    Microsoft Visual Studio
    ---------------------------
    未能连接到远程计算机(“xx”)。请确保在远程计算机上安装了 Web Deploy 并启动了所需的进程(“Web Management Service”)。  在以下位置了解更多信息: https://go.microsoft.com/fwlink/ ... ATION_NOT_REACHABLE。 无法连接到远程服务器
    ---------------------------
    确定   
    ---------------------------

    3.安装“IIS 管理脚本和工具”

    转到“选择服务器角色” > “Web 服务器(IIS)” > “管理工具”,然后选择“IIS 管理脚本和工具”角色,点击“下一步”,然后安装角色 。



    4.IIS 启用远程连接

    在 IIS 找到管理服务,启用远程连接,如下图:





    (备注:在防火墙和安全组要开放8172入站端口

    5.新建 IIS 站点

    新建一个名称为 test1 的站点,如下图:



    6.IIS 添加管理用户

    添加 IIS 管理器用户,如下图:

     

    同时,在 test1 站点,添加授权,如下图:

     

    如果未添加授权,在远程发布的时候,会报错如下:

    ---------------------------
    Microsoft Visual Studio
    ---------------------------
    已使用 Web 管理服务连接到远程计算机(“xxx”),但未能授权。请确保你使用了正确的用户名和密码、你连接的站点已存在并且凭据代表的用户有权访问该站点。  在以下位置了解更多信息: https://go.microsoft.com/fwlink/ ... R_USER_UNAUTHORIZED。 远程服务器返回错误: (401) 未经授权。
    ---------------------------
    确定   
    ---------------------------

    发布 ASP.NET MVC 项目

    首先,使用 vs 2019 新建一个 .NET 4.6.2 的 asp.net mvc 项目,名称为:WebAutomatedDeployment,

    再新建两个类库,网站程序同时引用这2个类库。(新建和引用2个类库,原因是模拟更接近正式的项目)


    尝试启动项目,如下图:



    右击项目,选择发布,web服务器(iis)->web部署,填写服务器信息,如下图:

      

    验证连接,测试通过,如下图:

     


    尝试发布的时候,报错如下:

    Web 部署任务失败。((2020/10/9 11:34:38)在远程计算机上处理请求时出错。)

    (2020/10/9 11:34:38)在远程计算机上处理请求时出错。
    服务器在处理请求时遇到问题。请与服务器管理员联系以了解详细信息。        WebAutomatedDeployment                0

    可以通过服务器事件查看器查看具体的错误,如下图:

    User: itsvse
    Client IP: 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:
    发生了传播到客户端的跟踪部署代理异常。请求 ID“def8d9f7-1a72-4b19-8b75-919f8c6a9604”,请求时间戳:“2020/10/9 11:51:29”。错误详细信息:
    System.UnauthorizedAccessException: 尝试执行未经授权的操作。
       在 System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, String name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl)
       在 System.Security.AccessControl.NativeObjectSecurity.Persist(String name, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext)
       在 System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections, Object exceptionContext)
       在 Microsoft.Web.Deployment.FileSystemSecurityEx.Persist(String path, Boolean isFile)
       在 Microsoft.Web.Deployment.SetAclProvider.Add(DeploymentObject source, Boolean whatIf)
       在 Microsoft.Web.Deployment.DeploymentObject.Update(DeploymentObject source, DeploymentSyncContext syncContext)
       在 Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject)
       在 Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
       在 Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)
       在 Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable`1 syncPassId, String syncSessionId)
       在 Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable`1 passId, String user, String siteName)
       在 Microsoft.Web.Deployment.DeploymentAgent.HandleRequestWorker(DeploymentAgentAsyncData asyncData)
       在 Microsoft.Web.Deployment.DeploymentAgent.HandleRequest(DeploymentAgentAsyncData asyncData)

    解决方案:

    重新启动 vs 工具,点击发布,会弹出如下图:



    勾选“为Visual Studia的将来会话保存此证书”即可解决。

    第一次发布的时候,比较慢,因为需要将全部的文件上传到服务器,如下图:



    尝试修改 Index.cshtml 页面文件,点击重新发布,只会更新如下3个文件,如下图:



    刷新网站,发现已经更新,如下图:

    最后,附上个人阅读量超1200万的博客:https://www.itsvse.com/blog_xzz.html

    (完)

  • 相关阅读:
    JavaWeb项目报错:The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
    Linux+Nginx+Tomcat+Redis实现负载均衡,应用集群及session共享
    CENTOS7下安装REDIS
    centOS7访问nginx失败解决-.0:80 failed (98: Address already in use)解决
    Nginx 配置反向代理后,页面中取绝对URL地址的问题显示代理端口
    linux中安装jdk
    在linux系统防火墙中放开对8080端口的限制
    Removing obsolete files from server... Could not clean server of obsolete files
    js关于小数点失精算法修正0.07*100竟然=7.000000000000001
    jquery ajax后台向前台传list 前台用jquery $.each遍历list
  • 原文地址:https://www.cnblogs.com/itsvse/p/13785107.html
Copyright © 2011-2022 走看看