У меня есть пользовательское определение сайта, и в обработчике обеспечения я использую SPWeb.ApplyWebTemplate («Имя определения моего сайта»), чтобы применить определение сайта. Это работает нормально, но я заметил, что есть некоторая задержка в применении веб-шаблона.
Что я сделал, так это то, что в определении моего сайта я установил атрибут masterurl на /_catalogs/masterpage/MyMaster.master. Теперь, если я создаю сайт в папке сайтов с использованием этого определения сайта, сайты создаются успешно, но при просмотре он выдает ошибку, поскольку «ресурс не найден». Я провел некоторое исследование и узнал, что главный URL должен быть относительным к серверу, а не относительным к сайту. Поэтому в коде обеспечения после применения шаблона я пишу код для обновления основного URL-адреса, добавляя к нему относительный URL-адрес сервера сайта.
Web.MasterUrl = Site.ServerRelativeUrl + Web.MasterUrl;
Но когда я просматриваю сайт, он не работает, и я получаю ту же ошибку. Я отладил код и обнаружил, что даже после применения шаблона главный URL-адрес имеет значение default.master. Я подождал там этого оператора в режиме отладки и обнаружил, что через некоторое время (несколько секунд) главный URL-адрес изменился на URL-адрес, который я указал в onet, т.е. MyMaster.master.
Похоже, ApplyWebTemplate () является асинхронным методом. Как я могу быть уверен, что процесс подачи веб-шаблона завершен.
Спасибо.