我有一个Blazor应用程序,我构建并希望通过Azure DevOps进行部署。到目前为止,这将导致部署后在通过Azure进行部署时出现500.30启动错误,但当我通过Web直接从Visual部署时,它就会工作。
这是我的部署任务的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发布时,它们位于www.root中。我必须为Blazor专门配置一些东西吗?
编辑:我确实发现了,问题在我的startup.cs中。我没有看到这些文件的原因可能与文件夹的权限系统有关。我还发现,我可以通过日志文件和事件日志获得转储,其中有更多信息可以通过Kudu获得:
发布于 2019-09-30 17:01:04
由于我的问题是笼统的表述,所以这里的答案有两方面:
如何从此错误获取更多信息
正如微软在故障排除文件中指出的那样,当应用程序无法启动时,就会出现此错误。对于Asp.Net核心应用程序,这也包括在programm.cs和startup.cs类中发生的所有事情。如前所述,您可以在stdout (如果启用)或事件日志中看到更多信息。要访问这些文件,可以转到Advances,或者转到"Debug Console -> CMD“,在那里您可以看到所有的文件,或者可以下载包含这两个文件的”工具->诊断“转储。在这两种情况下,它都位于LogFiles文件夹中。
修复崩溃
现在,它在日志文件中声明它找不到指定的文件。在我的例子中,这是我试图用以下代码加载的证书:
var cert = new X509Certificate2(Path.Combine(_environment.ContentRootPath, "Example.pfx"), "MyPassword");
正如我通过另一个这样的问题发现的,如果您通过Azure DevOps部署到Azure,您必须设置相应的KeyStore标志。对此代码进行调整后,它将如预期的那样工作:
var cert = new X509Certificate2("Example.pfx", "MyPassword",
X509KeyStorageFlags.MachineKeySet |
X509KeyStorageFlags.PersistKeySet |
X509KeyStorageFlags.Exportable);
https://stackoverflow.com/questions/58158056
复制相似问题