在visual studio 2022中使用Web Deploy的方式部署到iis,可远程更新程序
部署过程中遇到的问题, 500.38
HTTP Error 500.38 - Failed to locate ASP.NET Core app
Common solutions to this issue:
The app couldn’t be found. Confirm the app’s main DLL is present. Single-file deployments are not supported in IIS. Troubleshooting steps:
- Check the system event log for error messages
- Enable logging the application process’ stdout messages
- Attach a debugger to the application process and inspect
For more guidance on diagnosing and handling these errors, visit Troubleshoot ASP.NET Core on Azure App Service and IIS.
由于项目在发布的属性中,在文件发布选项,勾选了生成单个文件选项,而iis网站的web.config文件中hostingModels属性设置的是inprocess,只要将值改成outofprocess。
或者,取消勾选生成单个文件选项,也可以解决这个问题 参考链接
两种托管进程类型
- 进程内(inprocess),使用的是iis服务器
- 进程外(outofprocess),使用的是Kestrel 服务器
进程内和进程外托管之间的差异
在进程内托管时,将应用以下特征:
使用 IIS HTTP 服务器 (IISHttpServer),而不是 Kestrel 服务器。 对于进程内托管,CreateDefaultBuilder 会调用 UseIIS 来进行以下操作:
- 注册 IISHttpServer。
- 在 ASP.NET Core 模块后运行时,配置服务器应侦听的端口和基本路径。
- 配置主机以捕获启动错误。
requestTimeout 属性不适用于进程内托管。
不支持在应用之间共享应用池。 每个应用使用一个应用池。
应用和已安装的运行时(x64 或 x86)的体系结构(位数)必须与应用池的体系结构匹配。 例如,为 32 位 (x86) 发布的应用必须已为其 IIS 应用程序池启用 32 位。 有关详细信息,请参阅创建 IIS 站点部分。
检测到客户端连接断开。 客户端断开连接时,将取消 HttpContext.RequestAborted 取消标记。
在进程内托管时,不会在内部调用 AuthenticateAsync 来初始化用户。 因此,默认情况下不激活每次身份验证后用于转换声明的 IClaimsTransformation 实现。 使用 IClaimsTransformation 实现转换声明时,请调用 AddAuthentication 以添加身份验证服务:
不支持 Web 包(单文件)部署。
单文件反编译
使用ILSpy反编译