Одна из наиболее распространенных причин, по которым SPContext считается нулевым, - это наличие неправильно настроенного AAM. Очень важно, чтобы sharepoint понимал, какие URL настроены для вашего сайта, потому что, если ваш URL не зарегистрирован, он не может сказать, находится ли URL внутри SPContext, следовательно, создайте его.
Самым распространенным изменением, которое я видел, является изменение заголовков хоста
Сайт IIS. Это огромное нет-нет, пожалуйста, никогда не делайте этого (используйте
ААМ вместо). Если вы продолжите и измените это любой из ваших новых
добавленные заголовки будут только частично функциональны. Внутри SharePoint
Есть много компонентов, которые полагаются непосредственно на URL и в
особенно при поиске этого URL внутри. Что вы найдете (для
разработчики), что ссылки на SPContext.Current (основной кусок
SharePoint, боже) не будет работать. Это вызывает хаос наугад
Страницы SharePoint, веб-части и пользовательские функции.
Посмотрите здесь, если вы хотите узнать, как настроить AAM (и выясните, почему они так важны), посмотрите мою запись в блоге на эту тему.
http://blog.staticvoid.co.nz/2011/05/sharepoint-alternate-access-mappings.html