Вы устанавливаете свой SPWeb на SPContext.Current.Web, это не имеет повышенных привилегий. Только SPWebs, созданные из SPS-сайтов, созданных внутри делегата, повышаются.
Так что вам нужно заменить
SPWeb web = SPContext.Current.Web;
с
SPWeb web = site.OpenWeb(SPContext.Current.Web.ID);