zoukankan      html  css  js  c++  java
  • 解决ASP.NET Core部署到IIS,更新项目"另一个程序正在使用此文件,进程无法访问"

    问题:部署到IIS上的ASP.NET Core项目,在更新的时候会进程占用的错误

    初步解决方案:

    1,关闭应用程序池

    2,关闭网站

    3,更新项目

    缺点:网站没法访问,部署项目停的时间过长

     

    查询官方文档后,官方给出的方案:

    结合官方文档,找到了一个目前看算是比较好的解决方案(一定要看底部的特别注意)

    好点的解决方案(一次配置后,1秒钟更新):

    1,在D盘根目录创建一个app_offline.htm文件,注意是.htm文件,不是.html

    2,创建一个待发布文件夹,把需要更新的项目文件放到该目录下

    3,创建一个bat执行文件,内容如下,通过bat文件完成更新

    @echo off
    call xcopy D:app_offline.html D:运行的项目
    call xcopy D:待发布项目 D:运行的项目 /s /e /Q /Y /I
    del D:运行的项目app_offline.htm

    注释:

    1,复制D盘根目录的app_offline.htm文件到项目运行的目录,接管所有的请求

    2,复制待发布的文件到项目运行的目录完成覆盖更新

    3,删除app_offline.htm文件恢复项目正常运行

    特别注意

    部署到 IIS 的 ASP.NET Core 应用程序可以选择两种不同的托管模式,分别是“进程内托管” 和 “进程外托管”,选择不同的托管模式可通过修改配置文件 web.config 来完成配置选择

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
        <system.webServer>
          <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
          </handlers>
          <aspNetCore processPath="dotnet" arguments=".Property.Api.dll" stdoutLogEnabled="false" stdoutLogFile=".logsstdout" hostingModel="OutOfProcess" />
        </system.webServer>
      </location>
    </configuration>

    需要修改 aspNetCore的hostingModel

    InProcess(进程内托管)

    OutOfProcess(进程外托管)

    好点的解决方案需要把项目修改为OutOfProcess(进程外托管)

  • 相关阅读:
    编译 出错
    关于工程思维
    关于大屏拼接方案 触摸屏 红外 和 电容屏
    爱宝A-1180热转印条码打印机 打印乱码,对不齐的问题
    制作 企业微场景 邀请函
    《七年就是一辈子》 逻辑思维 互联网 得到
    Python妙用re.sub分析正则表达式匹配过程
    第11.25节 Python正则表达式编译re.compile及正则对象使用
    Python正则表达式书写容易碰到的陷阱:W*和W*?匹配过程遇到的问题
    Python正则表达式W+和W*匹配过程的深入分析
  • 原文地址:https://www.cnblogs.com/zhangchunyu/p/11066078.html
Copyright © 2011-2022 走看看