FileNotFoundException с конструктором SPSite - PullRequest
22 голосов
/ 05 ноября 2008

Я пытаюсь создать экземпляр SPSite на сервере фермы в настраиваемом процессе (MyApp.exe), и в качестве параметра я указываю весь URI (http://mysite:80/).. Я также убедился, что учетная запись работает MyApp.exe - это Site Collection Administrator.

Однако я не могу сделать экземпляр SPSite, что бы я ни пытался сделать. Это всегда бросает FileNotFoundException.

Кто-нибудь получил идею?

StackTrace:

в Microsoft.SharePoint.SPSite..ctor (SPFarm ферма, Uri requestUri, логическое значение contextSite, SPUserToken userToken)
в Microsoft.SharePoint.SPSite..ctor (String requestUrl) в MyCompanyName.Service.HelperClass.GetItemStateInSharePoint (SharePointItem пункт) в C: \ Workspaces \ MyCompanyName \ Разработка \ Main \ MyCompanyName.SharePoint \ Service \ HelperClass.cs: линии 555

Еще одно примечание ... У меня есть веб-приложение + семейство сайтов, к которому я могу без проблем обращаться через браузер.

Ответы [ 21 ]

14 голосов
/ 05 ноября 2008

Исключение FileNotFoundException выбрасывается SharePoint, когда он не может найти запрошенное семейство сайтов в базе данных конфигурации SharePoint. Я предполагаю, что вы еще не создали семейство сайтов по URL-адресу http://mysite:80.. Я вижу следующую трассировку стека, если пытаюсь создать новый объект SPSite с URL-адресом несуществующего семейства сайтов:

System.IO.FileNotFoundException : The site http://server/sites/bah could not be found in the Web application SPWebApplication 
Name=SharePoint - 80 Parent=SPWebService.
at Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri requestUri, Boolean contextSite, SPUserToken userToken)
at Microsoft.SharePoint.SPSite..ctor(String requestUrl)

Укажите правильный URL-адрес семейства сайтов или откройте центр администрирования и создайте новое семейство сайтов.

12 голосов
/ 06 октября 2010

Изменение цели платформы в свойствах сборки на x64 решило эту проблему для меня в SharePoint 2010.

10 голосов
/ 07 октября 2009

Прочтите этот сайт http://community.bamboosolutions.com/forums/t/8179.aspx если вы используете 64-битную ОС и используете MSTest (32-битную версию), она не будет выполнена, используйте nunit works !!!

4 голосов
/ 28 января 2011

Если это консольное приложение, обращающееся к SharePoint 2010, убедитесь, что для Build Target вашего проекта установлен x64, а для .NET Framework - 3.5.

3 голосов
/ 04 декабря 2010

Эта проблема больше относится к разрешению пользователя, дайте следующее разрешение

Разрешение пользователя Сайт SharePoint --- Минимальное разрешение на чтение

Сервер Sharepoint --- Добавить в группу WSS_ADMIN_WPG

База данных --- БД контента Sharepoint (база данных семейства сайтов) - разрешение db_owner Sharepoint Config DB (Конфигурационная база данных установки sharepoint) - - разрешение db_owner

Подробнее в моем блоге

http://sharepointinstallation.blogspot.com/2010/12/minimal-permission-required-to-execute.html

2 голосов
/ 05 ноября 2008

Также возможно, что объектной модели не понравится URL, который вы ей даете. Если вы не предоставите ему точный URL-адрес, по которому вы создали семейство сайтов, или точный URL-адрес, указанный в вашем, настроен в ваших сопоставлениях альтернативного доступа, то возникнет исключение, которое не обязательно имеет смысл. В вашем случае вы можете попробовать http://mysite или http://machinename.

1 голос
/ 20 декабря 2008

Недавно я обнаружил, что эта проблема с конструктором может быть вызвана странным поведением конструктора.
Я беру про MOSS 2007. Когда вы передаете полный URL-адрес сайта конструктору, он, по-видимому, действительно учитывает только часть сайта URL-адреса, выбирая веб-приложение, которое «выбрано» в данный момент в элементе управления селектором веб-приложения.
Таким образом, например, когда у вас есть «http://webapp/sites/site" и у вас есть» http://weabapp:22345", выбранный в данный момент (последний раз, когда вы выбирали его в таком селекторе), когда вы вызываете

SPSite site = new SPSite("http://webapp/sites/site")

Он пытается создать объект сайта для "http://webapp:22345/sites/site" и завершается неудачей.

1 голос
/ 05 ноября 2008

Stacktrace исключения будет полезно.

Я думаю, вы, возможно, сможете получить некоторое представление о том, что это за файл и что происходит, отключив «только мой код» в инструментах -> опции -> отладка и посмотрев на аргумент имени файла в стеке вызовов исключения, когда отладчик показывает это (если вы, конечно, можете его отладить), или, возможно, имя отображается в сообщении об исключении.

1 голос
/ 03 февраля 2011

У меня была такая же проблема. Я хотел запустить консольное приложение с моим идентификатором пользователя. Я владелец веб-приложения + Farm Admin. Все еще не удалось запустить приложение.

Проблема была решена

  1. Изменение цели платформы в свойствах сборки на x64

  2. В настройках сайта -> Пользователи и разрешения -> Администраторы семейства сайтов было два имени. Убрал другое имя и он начал работать.

1 голос
/ 22 января 2014

У нас была такая же проблема, но я знаком с различными причинами, вот краткое изложение:

  1. Вы могли неправильно набрать или иным образом ввести неправильный адрес
  2. У учетной записи пользователя, на которой запущен процесс, нет необходимых разрешений, а именно: разрешение на чтение для сайта SharePoint, а также база данных db для конфигурации SharePoint и база данных контента.
  3. При сборке на 64-битном сервере процесс должен быть 64-битным (по умолчанию - 64-битный "Любой ЦП").
  4. Процесс должен быть нацелен на .NET 3.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...