Вам необходимо удалить 1 из расчета вашей проверки длины, чтобы учесть операцию подстроки, работающую с индексом на основе нуля:
if (anid != null && anid.ToString().Length >= (ANIDLength + ANIDOffset - 1))
Это работает на моем компьютере:
private string GetAnid()
{
object anidValue;
int ANIDLength = 32;
int ANIDOffset = 2;
if (UserExtendedProperties.TryGetValue("ANID", out anidValue))
{
if (anidValue != null && anidValue.ToString().Length >= (ANIDLength + ANIDOffset - 1))
{
return anidValue.ToString().Substring(ANIDOffset, ANIDLength);
}
else
{
return "???";
}
}
else
{
return "???";
}
}