从 Visual Studio 发布 Azure 云服务(扩展支持)失败 - 对象引用未设置到对象的实例

问题描述 投票:0回答:1

注意: 这不是典型的空引用错误!
该错误是 Microsoft Azure 活动日志 输出中的一条消息,而不是直接来自我可以调试的项目中的代码。

我有一个 Web 角色项目,已从 Visual Studio 发布到 Azure 云服务(扩展支持) 实例。这已经有效很多年了。自 2023 年 12 月以来,我一直无法部署到 Azure,这是部署的 Microsoft Azure 活动日志 输出:

3:53:58 PM - Uploading '...\app.publish\test.cspkg' as 'test-2f8682e7.cspkg' to storage account...
3:55:05 PM - Uploading '...\app.publish\ServiceConfiguration.Test.cscfg' as 'ServiceConfiguration.Test-2f8682e7.cscfg' to storage account...
3:55:05 PM - Checking if all the certificates exist in key vault 'https://testeskv.vault.azure.net/'...
3:55:06 PM - Object reference not set to an instance of an object.

VS 2022 企业版:v17.8.3
微软 Azure 工具:v2.9

如果我从密钥保管库中删除证书,则部署将停止并显示以下消息:

10:32:45 AM - Uploading '...\app.publish\test.cspkg' as 'FinPalApp.DocumentGenerator.Website.Azure-14a25f38.cspkg' to storage account...
10:33:53 AM - Uploading '...\app.publish\ServiceConfiguration.Test.cscfg' as 'ServiceConfiguration.Test-14a25f38.cscfg' to storage account...
10:33:53 AM - Checking if all the certificates exist in key vault 'https://demodocumentgeneratorkv.vault.azure.net/'...
10:33:53 AM - Error: certificate: ‘Certificate1’ with thumbprint: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8 for role: Test is not present in the key vault: https://testeskv.vault.azure.net/

这将验证密钥保管库上的 List 权限设置是否正确,并且失败发生在证书检查之后。我怀疑故障是在网络配置或其他原因期间发生的。

我确实尝试增加日志详细信息,但这没有在输出中提供任何进一步的信息:

我也尝试过禁用远程桌面,但这也没有产生任何影响。

去年,我在使用临时 VIP 交换槽时确实遇到了同样难以诊断的问题,类似于这篇文章:从 Visual Studio 发布 Azure 云服务(扩展支持)失败,并显示“语言表达式属性‘slotType’不存在”,因此我知道Azure ToolsVisual Studio 或与部署扩展支持 Web 角色相关的模板和脚本的最新更新。

问题:如何解决此问题,或者是否有新方法在扩展支持中部署 Web 角色。

我正在积极研究替代部署配置,以消除对这一遗留服务的依赖,但我希望有人经历过这种情况并可以提供一些帮助。

azure azure-web-roles azure-deployment
1个回答
0
投票

开发者社区帖子中报告了此问题:云服务(扩展支持)发布因对象引用错误而失败

该问题已在 2024 年 2 月 13 日发布的版本中修复 - Visual Studio 2022 版本 17.9.0,并且在早期预览版本中可用。

更新到最新解决了这个问题。


问题帖子介绍了调试这些类型问题的技术:

调试 Visual Studio
...启动一个单独的 Visual Studio 实例,然后在发布之前,使用“调试”->“附加到进程”菜单并附加到 devenv.exe 的另一个实例。继续发布,当出现空引用时,调试器应在该位置停止

附加信息
在“工具”->“选项”->“调试”->“常规”中取消选中“仅我的代码”。另外,在“附加到进程”对话框的“附加到:”部分中,确保选择了“自动:托管 (.NET 4x) 代码”。 引发错误的代码: 堆栈跟踪:

位于 Microsoft.Cct\DiagnosticsConfigurationHelper.cs 中的 Microsoft.Cct.DiagnosticsConfigurationHelper.FillInConfigXml(字符串originalPublicConfig、字符串originalPrivateConfig、BlobServiceClient blobClient、字符串connectionString、字符串storageType):第210行 调用堆栈:

Microsoft.VisualStudio.WindowsAzure.2.9.dll! Microsoft.Cct.DiagnosticsConfigurationHelper.FillInConfigXml(字符串originalPublicConfig,字符串originalPrivateConfig,Azure.Storage.Blobs.BlobServiceClient blobClient,字符串connectionString,字符串storageType)第210行C#
Microsoft.VisualStudio.WindowsAzure.2.9.dll! Microsoft.Cct.DiagnosticsConfigurationHelper.FillStorageKeyIfNeededAsync(字符串originalPublicConfig,字符串originalPrivateConfig,字符串roleName,Microsoft.Cct.ServiceModel.ServiceModelView serviceModel,字符串serviceConfiguration,Microsoft.VisualStudio.WindowsAzure.ResourceManagement.IAzureSubscriptionContextWrapper上下文,字符串fallbackAccountName)第171行C#

Microsoft.VisualStudio.WindowsAzure.2.9.dll! Microsoft.Cct.CctProjectConfig.CreateRoleDiagnosticsConfigMappingAsync(Microsoft.VisualStudio.WindowsAzure.ResourceManagement.IAzureSubscriptionContextWrapper 上下文)第 1244 行 C#

Microsoft.VisualStudio.WindowsAzure.2.9.dll! Microsoft.Cct.CctProjectConfig.PrepareAzureRMDeployment(Microsoft.VisualStudio.WindowsAzure.ResourceManagement.IAzureSubscriptionContextWrapper 上下文、Microsoft.Cct.ResourceManagement.AzureRMClient armClient、Microsoft.VisualStudio.Azure.Deployment.AzureDeploymentSettings 设置、Microsoft.VisualStudio.Azure.Deployment.IAzureCustomDeploymentNotification 部署通知、 System.Threading.CancellationToken cancelToken) 第 830 行 C#

© www.soinside.com 2019 - 2024. All rights reserved.