Почему SPSecurity.RunWithElevatedPrivileges возвращает пользователя FBA?

У меня есть код для запуска поискового запроса, который я запускаю через сайт, на котором настроена аутентификация на основе форм.

Когда я вхожу в систему с пользователем FBA и пытаюсь выполнить поисковый запрос, он выдает ошибку как

Извините, что-то пошло не так.

ТЕХНИЧЕСКИЕ ДЕТАЛИ Ошибка: серверу не удалось обработать запрос. ---> Попытка выполнить несанкционированную операцию.

 SPSecurity.RunWithElevatedPrivileges(delegate
                {

результатXml = queryService.Query (xmlQuery); //Ошибка здесь

                 });

Может ли кто-нибудь предоставить мне подробную информацию, как решить эту проблему?

Примечание. Этот же код работает при запуске с сайта, на котором не установлена ​​настройка FBA.


person Sigar Dave    schedule 13.09.2016    source источник


Ответы (1)


Можете ли вы показать, что делает ваш queryServer.Query? Использование RunWithElevatedPrivileges предполагает создание нового объекта SPSite/SPWeb в вызове с повышенными правами, поэтому, возможно, это может быть проблемой?

person Verthosa    schedule 14.09.2016
comment
QueryServer.Query будет запрашивать всех доступных людей и искать их в соответствии с запросом. Я попытался создать объекты SPSite и SPWeb внутри запуска с повышенными правами, но потерпел неудачу. с той же ошибкой отказа в доступе - person Sigar Dave; 14.09.2016
comment
RunWithElevatedPrivileges должен работать как учетная запись пула приложений. Есть ли у этого пользователя доступ к службе профилей пользователей? - person Verthosa; 14.09.2016
comment
На самом деле основная проблема в том, что я хочу запустить это, используя учетную запись FBA? Как я могу это сделать? - person Sigar Dave; 14.09.2016
comment
в проекте, над которым я работаю, также включен FBA, и мы не сталкиваемся с проблемами при запуске решений, работающих с повышенными привилегиями. Я бы использовал отладчик и проверил, какой пользователь работает с повышенными правами. Затем дважды проверьте, есть ли у него доступ к «Запросить всех людей» (на самом деле вы не указали, происходит ли это из базы данных или службы профилей пользователей). - person Verthosa; 14.09.2016
comment
Вертоша спасибо. Пользователь, который работает как elivates, является моим пользователем FBA. Я отлаживаю его и проверяю SPContext.Current.Site.CurrentUser, и это то же самое, что и я, зарегистрированный (пользователь FBA). Вместо этого я должен быть пользователем App Identity. Также не могли бы вы рассказать мне, как проверить всех пользователей QUery? - person Sigar Dave; 14.09.2016
comment
хм, проверьте эту статью: social.msdn.microsoft.com/Forums/office/en-US/ устанавливает для HttpContext значение null как своего рода взлом - person Verthosa; 14.09.2016
comment
Эй, СигарДэйв, ты пробовал это? Я помню, что делал это также, но в вызовах веб-сервиса (не совсем понятно, почему я это сделал, но это также было необходимо, чтобы все заработало) - person Verthosa; 14.09.2016
comment
Verthosa, я пробовал, но он не работает и возвращает пользователя FBA вместо пользователя пула приложений. - person Sigar Dave; 19.09.2016
comment
хорошо, тогда у меня закончились идеи, надеюсь, что кто-то еще может помочь вам в дальнейшем - person Verthosa; 19.09.2016
comment
Вертоша большое спасибо. - person Sigar Dave; 19.09.2016