【问题标题】:How to deploy Blazor App to Azure via Azure DevOps如何通过 Azure DevOps 将 Blazor 应用程序部署到 Azure
【发布时间】:2020-01-29 04:01:33
【问题描述】:

我有一个 Blazor 应用程序,我构建并希望通过 Azure DevOps 进行部署。 到目前为止,通过 Azure 部署后会导致 500.30 启动错误,但当我通过 Web Deploy 直接从 Visual Studio 部署时它可以工作。

这是我的部署任务的 yaml:

steps:
- task: AzureRmWebAppDeployment@4
  displayName: 'Deploy Azure App Service'
  inputs:
    azureSubscription: '$(Parameters.ConnectedServiceName)'
    appType: '$(Parameters.WebAppKind)'
    WebAppName: '$(Parameters.WebAppName)'
    packageForLinux: '$(System.DefaultWorkingDirectory)/**/*Server.zip'
    JSONFiles: '**/appsettings.json'

我在同一个解决方案中确实有另一个 asp.net 核心 WebApp(只有一个带有剃须刀页面),该解决方案之前是使用相同的管道构建和发布的。当我通过同一管道发布该 zip 时,它按预期工作。

我通过 FTP 检查有什么区别,并注意到我无法通过 Azure 看到部署中的文件。但是当通过 Visual Studio 发布时,它们位于 wwwroot 中。我必须为 Blazor 专门配置一些东西吗?

编辑:我确实发现问题出在我的 startup.cs 中。我看不到文件的原因可能与文件夹的权限系统有关。我还发现我可以通过 Kudu 获得更多信息的日志文件和事件日志的转储:

【问题讨论】:

  • 什么是 500 错误?
  • 感谢您的回复。这有点问题,因为我看不到文件,因此也没有日志文件。但是我通过 Kudu 找到了诊断转储和其中的事件日志,这是我的 startup.cs 的问题。对不起,如果我写错了问题。
  • 您是否从 azure devops 管道日志中看到任何 Activity ID
  • @MerlinLiang-MSFT 不,我找不到任何相关信息。但我可以肯定地确认部署管道有效并且问题出在我的启动中(它找不到 pfx 文件,我必须添加密钥存储标志)。我仍然有点困惑的是,它在我从 Visual Studio 部署之前工作,并且我无法通过 FTP 看到部署的文件。
  • 对于 blazor 项目,它有一个特殊的部署方法,请尝试使用Azure File Copy 任务。根据您的问题,您提到其相关路径中没有列出任何文件。我认为它应该是由使用的任务引起的。由于这个详细的博客:chrissainty.com/deploying-blazor-apps-using-azure-pipelines

标签: azure azure-devops blazor


【解决方案1】:

由于我的问题是笼统的,所以这里的答案有两个:

如何从此错误中获取更多信息

正如微软在the trouble shoot document 中指出的那样,此错误是您的应用程序无法启动。关于 Asp.Net 核心应用程序,这还包括在 programm.cs 和 startup.cs 类中发生的所有事情。 正如所指出的,您可以在标准输出(如果启用)或事件日志中看到更多信息。要访问这些,请转到高级工具,然后转到“调试控制台-> CMD”,您可以在其中查看所有文件或“工具-> 诊断”转储以下载包含(除其他外)这两个文件的 Zip。在这两种情况下,它都位于 LogFiles 文件夹中。

修复崩溃

现在在日志文件中它指出它找不到指定的文件。就我而言,这是一个证书,我尝试使用这行代码加载:

var cert = new X509Certificate2(Path.Combine(_environment.ContentRootPath, "Example.pfx"), "MyPassword");

正如我通过另一个 SO 问题发现的那样,如果您通过 Azure DevOps 部署到 Azure,则必须设置相应的 KeyStore 标志。通过调整此代码,它可以按预期工作:

    var cert = new X509Certificate2("Example.pfx", "MyPassword",
                                    X509KeyStorageFlags.MachineKeySet |
                                    X509KeyStorageFlags.PersistKeySet |
                                    X509KeyStorageFlags.Exportable);

【讨论】:

    猜你喜欢
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多