azure.ContainerGroups.ListByResourceGroup 抛出资源未找到异常
azure.ContainerGroups.ListByResourceGroup throws Resource not found exception
使用 Microsoft.Azure.Management.ResourceManager.Fluent
库枚举资源组中的容器时:
azure.ContainerGroups.ListByResourceGroup(resouceGroup)
Returns 枚举器,但对枚举器执行任何操作(例如 .ToList()
)将抛出:
Exception thrown: 'Microsoft.Rest.Azure.CloudException' in System.Private.CoreLib.dll
The Resource 'Microsoft.ContainerInstance/containerGroups/myResource' under resource group 'myResourceGroup' was not found.
我通过重建枚举器解决了这个问题,因为它引发了 MoveNext()
操作。然而,枚举器迭代器仍然增加,有效地跳过了丢失的资源。
private static List<IContainerGroup> getContainerInstances(IAzure azure, string resouceGroup)
{
var brokenEnumerator = azure.ContainerGroups.ListByResourceGroup(resouceGroup).GetEnumerator();
var containerInstances = new List<IContainerGroup>();
while (true)
{
try
{
if (!brokenEnumerator.MoveNext())
{
break;
}
containerInstances.Add(brokenEnumerator.Current);
}
catch (CloudException)
{
// noop
}
}
return containerInstances;
}
使用 Microsoft.Azure.Management.ResourceManager.Fluent
库枚举资源组中的容器时:
azure.ContainerGroups.ListByResourceGroup(resouceGroup)
Returns 枚举器,但对枚举器执行任何操作(例如 .ToList()
)将抛出:
Exception thrown: 'Microsoft.Rest.Azure.CloudException' in System.Private.CoreLib.dll
The Resource 'Microsoft.ContainerInstance/containerGroups/myResource' under resource group 'myResourceGroup' was not found.
我通过重建枚举器解决了这个问题,因为它引发了 MoveNext()
操作。然而,枚举器迭代器仍然增加,有效地跳过了丢失的资源。
private static List<IContainerGroup> getContainerInstances(IAzure azure, string resouceGroup)
{
var brokenEnumerator = azure.ContainerGroups.ListByResourceGroup(resouceGroup).GetEnumerator();
var containerInstances = new List<IContainerGroup>();
while (true)
{
try
{
if (!brokenEnumerator.MoveNext())
{
break;
}
containerInstances.Add(brokenEnumerator.Current);
}
catch (CloudException)
{
// noop
}
}
return containerInstances;
}