我有一个Blazor应用程序,该应用程序可以生成并希望通过Azure DevOps进行部署。 到目前为止,在通过Azure进行部署时,在部署之后会导致500.30启动错误,但是当我通过Web Deploy直接从Visual Studio进行部署时,它会起作用。
这是我的部署任务的名称:
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(只有一个带有剃须刀页面),该WebApp以前是用相同的管道构建和发布的。当我通过相同的管道发布该zip时,它可以按预期工作。
我通过FTP检查有什么区别,并注意到我看不到通过Azure进行的部署中的文件。但是,当通过Visual Studio发布它们时,它们位于wwwroot中。我必须为Blazor专门配置一些东西吗?
编辑:我确实发现问题出在我的startup.cs中。我看不到文件的原因可能与文件夹的权限系统有关。我也确实发现我可以通过Kudu获取带有日志文件和eventlog的转储,其中有更多信息:
答案 0 :(得分:1)
由于我的问题是广义的,所以这里的答案有两个:
如何从此错误中获取更多信息
Microsoft在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);