Программное создание списка из CheckoutStepsTemplate вызывает исключение

(Этот вопрос был размещен на форумах MSDN здесь.)

Я работаю над настраиваемым сайтом SharePoint / Commerce Server, и у меня есть настраиваемая функция, которая предназначена для двух вещей: подготовки некоторых страниц с помощью модулей и предоставления списка этапов оформления заказа с использованием шаблона CheckoutStepsList в приемнике функций. Однако по какой-то причине в некоторых случаях создание списка выдает исключение:

Неверное имя файла

Указанное имя файла использовать нельзя. Это может быть имя существующего файла или каталога, или у вас может не быть разрешения на доступ к файлу.

Когда я пытаюсь перейти к списку, я попадаю на страницу настроек списка (должно быть представление по умолчанию), и в списке 0 элементов. Таким образом, похоже, что он подготовил список на полпути, но разбился где-то посередине.

Воспроизвести эту проблему довольно сложно. Если я активирую эту функцию с помощью команды stsadm в командной строке, она всегда терпит неудачу, но если я делаю это через пользовательский интерфейс SharePoint, иногда это не удается, а иногда нет. Сбои в пользовательском интерфейсе, кажется, происходят чаще, если страницы, подготовленные с помощью модулей, еще не существуют, но я еще не уверен в этом.

Вот оскорбительный код:

SPListTemplateCollection listTemplateCollection = web.Site.GetCustomListTemplates(web);
SPListTemplate checkoutStepsTemplate = listTemplateCollection["CheckoutStepsTemplate"];
Guid listID = web.Lists.Add(listName, String.Empty, checkoutStepsTemplate); // the exception is thrown on this line

Есть идеи, что здесь происходит? Я продолжу отладку со своей стороны и буду рад предоставить любую информацию, которая может помочь в диагностике проблемы.


person Jonathan Schuster    schedule 22.05.2009    source источник


Ответы (1)


Я так и не нашел полного решения этой проблемы, но я достаточно диагностировал проблему, и мы нашли приемлемое решение. Оказывается, проблема возникала только при инициализации элементов через модули в одной и той же функции, но когда эти модули включены в другую функцию, все работало нормально.

Мы решили двигаться дальше, так что это все, что я смог найти в поиске основной причины проблемы, но это, по крайней мере, достаточно хорошее исправление, которое не вызовет у нас головной боли в будущем.

person Jonathan Schuster    schedule 26.05.2009