Ошибка определенно означает, что поле не может быть найдено.
Отладьте процесс и посмотрите на свойство ListItem.Fields.SchemaXML
, чтобы найти его внутреннее имя, оно может быть сохранено внутри как что-то отличное от URL
. Вы также можете использовать следующий метод, чтобы получить значение элемента списка.
SPField l_field = l_item.Fields.GetField("URL");
string l_fieldValue = l_item[l_field.Id].ToString();
Метод GetField
ищет поля как по DisplayName, так и InternalName.