管道中的变量替换破坏了blazor webassembly应用程序中json文件的完整性



我在Azure管道中使用此步骤来部署Blazor WebAssemby应用程序。

我需要在应用程序中设置一些配置值,所以我使用此技术注入一些自定义值(当然,使用"JSONFiles"进行变量替换,我添加了箭头(:

- task: AzureRmWebAppDeployment@4
displayName: 'Deploy BlazorAssemblyClient'
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '...'
appType: 'webApp'
WebAppName: $(blazorAppName)
packageForLinux: '$(System.ArtifactsDirectory)/tempBlazorAssemblyClient/**/*.zip'
-> JSONFiles: '**/appsettings.json'

我创建了与appsettings.json中的内容相匹配的变量,所以一切都很好,我可以检查文件是否已正确更新。

但是,我现在看到了两个问题:首先,我在浏览应用程序时出错,因为文件的完整性不再得到满足。

Failed to find a valid digest in the 'integrity' attribute for resource 'https://.../appsettings.json' with computed SHA-256 integrity 'JqjyXWM4+hDsLD0kOHuOpJoNBrAMz5mlgQ7EuAbQb2M='. The resource has been blocked.

其次,我可以看到有两个压缩(生成(的对应文件(扩展名.br和.gz(没有更新(当然,我可以认为,因为它们是在更新原始的appsettings.json.之前生成的

这似乎不是在配置文件中注入自定义值的正确方式(至少对于Blazor WebAssembly应用程序(:可能我应该在生成应用程序之前更新appsettings.json文件。有没有关于如何解决这个问题的想法,或者其他可行的方法?

提前谢谢。

至少目前,我用一个非常简单的解决方案解决了问题,可能不太优雅,但它很有效
在发布和部署之前,我运行了一个powershell脚本,该脚本替换了appsettings.json:的内容

- powershell: |
Remove-Item '...path.../wwwroot/appsettings.json'
Set-Content '...path.../wwwroot/appsettings.json' '{"BaseApiAddress":"https://remoteapi.azurewebsites.net/api/"}'
$content= Get-Content -Path '...path.../wwwroot/appsettings.json'
Write-Host 'Content:'
Write-Host $content
Write-Host 'End of content'

它是有效的(是的,我将使用变量…:-(

附言:代码页肯定还有一些小问题,因为我在文件末尾看到了一些额外的字符,这些字符不应该存在。我会调查,但总的来说,它是有效的。

最新更新