SPContext.Current создает исключение SecurityException для большинства свойств. - PullRequest
0 голосов
/ 04 февраля 2010

Многие свойства для объектов SPContext.Current выдают исключение SecurityException. (Как и SPContext.Current.Fields, многие свойства в SPContext.Current.Site (см. Подробнее).

  • DLL находится в GAC
  • Использование владельца сайта при попытке свойства.
  • Может быть, это как-то связано с доступ к базе данных? Однако SharePoint сайт работает - могу добавить список предметы и т. д.
  • Пул приложений имеет разрешения на база данных. Должен ли я установить приложение учетная запись пула в качестве администратора фермы или не нужно?
  • В моей среде разработки это просто работает.

Где может быть проблема? Может ли кто-нибудь, пожалуйста, указать мне правильное направление?

Спасибо.

Подробнее

Из непосредственного окна:

SPContext.Current.Site
{Microsoft.SharePoint.SPSite}
    AllowRssFeeds: true
    AllowUnsafeUpdates: 'SPContext.Current.Site.AllowUnsafeUpdates' threw an exception of type 'System.Security.SecurityException'
    AllWebs: {Microsoft.SharePoint.SPWebCollection}
    ApplicationRightsMask: 9223372036854775807
    Audit: {Microsoft.SharePoint.SPAudit}
    CatchAccessDeniedException: true
    CertificationDate: 'SPContext.Current.Site.CertificationDate' threw an exception of type 'System.Security.SecurityException'
    ContentDatabase: {Microsoft.SharePoint.Administration.SPContentDatabase}
    CurrentChangeToken: 'SPContext.Current.Site.CurrentChangeToken' threw an exception of type 'System.Security.SecurityException'
    ...

И даже у исключения есть исключение внутри себя:

Окно исключений http://img41.imageshack.us/img41/442/ss20100204112542.png

ULS Журнал где-то в то время, когда происходит исключение: ULS Log http://img715.imageshack.us/img715/465/ss20100204113046.png

Просмотр событий имеет кучу ошибок

  • для поискового индексатора SharePoint (i нет рабочего поиска на момент, я просто надеюсь, что это не проблема)
  • И есть ошибка об Alternate Access Mapping (иногда я получаю доступ SharePoint с IP-адреса, а не с имя хоста, поскольку имена хостов не разрешаются в VPN для меня, но это другое проблема):

    Описание для идентификатора события (8214) в источнике (Windows SharePoint Services 3) не найдено. локальный компьютер может не иметь необходимая информация реестра или DLL-файлы сообщений для отображения сообщений с удаленного компьютера. Вы можете быть возможность использовать флаг / AUXSOURCE = для получить это описание; см Помощь и поддержка деталей. Следующая информация является частью событие: был сделан запрос на URL, http://192.168.0.9, который не имеет был настроен в альтернативном доступе Отображения. Некоторые ссылки могут указывать на URL альтернативного доступа для зона по умолчанию, http://serveris. Просмотрите сопоставления альтернативного доступа для этого веб-приложения в http://serveris:38590/_admin/AlternateUrlCollections.aspx и рассмотреть возможность добавления http://192.168.0.9 как общественность URL альтернативного доступа, если он будет часто используется Справка по этой ошибке: http://go.microsoft.com/fwlink/?LinkId=114854.

Ответы [ 2 ]

1 голос
/ 12 августа 2011

Я знаю, что мне пришлось использовать код, чтобы убедиться, что SPContext существует при выполнении из не-веб-контекста.

public static void EnsureSPContext(this SPWeb web)
    {
        // Ensure HttpContext.Current
        if (HttpContext.Current == null)
        {
            HttpRequest request = new HttpRequest("", web.Url, "");
            HttpContext.Current = new HttpContext(request,
              new HttpResponse(TextWriter.Null));
        }

        // SPContext is based on SPControl.GetContextWeb(), which looks here
        if (HttpContext.Current.Items["HttpHandlerSPWeb"] == null)
            HttpContext.Current.Items["HttpHandlerSPWeb"] = web;

    }
0 голосов
/ 04 февраля 2010

Ааа, теперь проблема решена после того, как вы уже трижды пошли на тот же рейк.

Это происходило в конструкторе WebPart (не знаю, играет ли он роль, но унаследовано от Microsoft.SharePoint.WebPartPages.WebPart), и там объект SPContext был испорчен.

Интересно, что это работает в моей среде разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...