【问题标题】:Error when deploying .NETCore API with Angular Frontend - HTTP Error 500.0 - ANCM In-Process Handler Load Failure使用 Angular 前端部署 .NETCore API 时出错 - HTTP 错误 500.0 - ANCM 进程内处理程序加载失败
【发布时间】:2020-07-23 22:19:59
【问题描述】:

我是使用 DevOps 的新手,也是论坛的新手。我一直在尝试学习 Pipelines 和 CI/CD 系统,但一直在尝试部署构建。任何见解或线索将不胜感激。

我有一个包含 3 个目录、1 个 .NETCore API、1 个 Angular 前端应用程序和 1 个带有 IdentityServer4 的存储库。

我有一个 CI 管道和一个 CD 管道都通过了。但是我在访问域时收到 HTTP 500.0 错误。

我觉得这与我不正确理解并一直试图弄清楚的管道有关。有什么想法吗?

设置: Azure DevOps,虚拟机 - Windows Server 2016 数据中心

构建 YAML:\

pool:
  name: Azure Pipelines
steps:
- task: DotNetCoreCLI@2
  displayName: Restore
  inputs:
    command: restore
    projects: '$(Parameters.RestoreBuildProjects)'

- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    projects: '$(Parameters.RestoreBuildProjects)'
    arguments: '--configuration $(BuildConfiguration)'

- task: DotNetCoreCLI@2
  displayName: Test
  inputs:
    command: test
    projects: '$(Parameters.TestProjects)'
    arguments: '--configuration $(BuildConfiguration)'

- task: DotNetCoreCLI@2
  displayName: Publish
  inputs:
    command: publish
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output "$(build.artifactstagingdirectory)"'
    zipAfterPublish: True

- task: CopyFiles@2
  displayName: 'Copy ARM templates'
  inputs:
    SourceFolder: ArmTemplates
    TargetFolder: '$(build.artifactstagingdirectory)'

- task: CopyFiles@2
  displayName: 'Copy Database File'
  inputs:
    Contents: '**\*.sql'
    TargetFolder: '$(build.artifactstagingdirectory)'
    flattenFolders: true

- task: UseNode@1
  displayName: 'Use Node 10.x'
  inputs:
    checkLatest: true

- task: Npm@1
  displayName: 'npm install'
  inputs:
    workingDir: 'APP'
    verbose: false

- task: Npm@1
  displayName: 'npm custom'
  inputs:
    command: custom
    workingDir: 'APP'
    verbose: false
    customCommand: 'install -g @angular/cli'

- task: Npm@1
  displayName: 'npm custom'
  inputs:
    command: custom
    workingDir: 'APP'
    verbose: false
    customCommand: 'run build --prod'

- task: ArchiveFiles@2
  displayName: 'Archive APP/dist'
  inputs:
    rootFolderOrFile: 'APP/dist'
    archiveFile: '$(Build.ArtifactStagingDirectory)/dest.zip'

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'

发布步骤:

  • Azure 资源组部署
  • Azure SQL 数据库部署
  • IIS 网络应用管理
  • IIS Web 应用部署

感谢任何帮助。 干杯,哈扎德

【问题讨论】:

    标签: angular .net-core azure-devops azure-pipelines devops


    【解决方案1】:

    我记得在将 .NET core 2 或 3 推出到 Azure 时遇到过这种情况。在敲了很长时间之后,整个问题都围绕着微软的新托管模块。因此,为了修复它,您需要将托管模型设置为进程外。

    TL;DR:将此添加到您的 csproj 文件中:

    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
    

    例子:

    <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
        <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
    </PropertyGroup>
    

    围绕它有很多 github 问题:

    以下是有关托管模型的文档: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-3.1

    【讨论】:

    • 感谢 mwilson 的回复,我应用了推荐的修复程序,但最初没有运气。但经过一番修修补补,我发现我也忘记将 .NETCore 更新到 3.1.x。非常感谢您的帮助。我现在可以停止把头撞到墙上了:P 只是为了让 Ident 服务器 4 现在可以在带有 IIS 的 VM 上工作 :)
    猜你喜欢
    • 1970-01-01
    • 2020-08-24
    • 2021-08-15
    • 2019-09-22
    • 2019-09-07
    • 2020-01-06
    • 2021-03-04
    • 2019-05-17
    相关资源
    最近更新 更多