Вопрос

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

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

У кого-нибудь есть идея?

Отслеживание стека:

в Майкрософт.SharePoint.SPSite..ctor(SPFarm ферма, Uri RequestURI, логическое значение Контекстный сайт, SPUserToken UserToken пользователя)
в Microsoft.SharePoint.SPSite..ctor(строка requestUrl) в MyCompanyName.Обслуживание.Класс помощи.GetItemStateInSharePoint(SharePointItem элемент) в C:\Workspaces\MyCompanyName\Development\Main\MyCompanyName .SharePoint\Service\HelperClass.cs:строка 555

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

Это было полезно?

Решение

Исключение 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-адрес вашего семейства веб-сайтов или откройте Центр администрирования и создайте новое семейство веб-сайтов.

Другие советы

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

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

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

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

Разрешение пользователя Сайт 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

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

Отслеживание стека исключения было бы полезно.

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

Проверьте свой web.config и посмотрите, есть ли там конфигурация с отсутствующим файлом.

Поищи журнал в своем 12-м улье.Если настройки вашего журнала верны, файл будет отсутствовать.

Редактировать:Проверьте также, все ли ваши библиотеки DLL находятся в GAC.Проверьте, содержит ли ваш файл web.config всю необходимую информацию:пространство имен,Имя_класса, NameSpace, Версия=version_number, Культура-your_culture, PublicKeyToken=your_signed_token

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

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

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

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

Проблема была решена с помощью

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

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

Вы можете сохранить для цели компиляции проекта значение "Любой процессор".Это важно для настройки хост-процесса MSTest на выполнение в 64 битах.Откройте ваш файл .testsettings, перейдите на вкладку Hosts и установите "Запускать тесты в 64-разрядной версии ..."

Если после этого, когда вы запускаете свои тесты, VS сообщает вам, что их нет, удалите и добавьте свой тестовый проект снова (я не знаю лучшего решения для этого)

Надеюсь, это поможет!

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

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

Я страдал от этого несколько недель назад.В конечном счете я обнаружил, что файл, который не удалось найти, был самой сборкой SharePoint.Среде выполнения не удалось загрузить сателлитную сборку с помощью поздней привязки.

Решением моей проблемы была регистрация сборок SharePoint 12.0.0.0 в GAC.Звучит не так, как будто это то же самое, что и ваша проблема, но просто К вашему сведению.

Мы столкнулись с той же проблемой несколько дней назад, и решение состояло в том, чтобы настроить приложение, которое пытается создать объект SPSite, на использование того же AppPool, что и веб-приложение Sharepoint.

Надеюсь, это поможет.

Проблема MSTest на x64 была причиной этой проблемы для меня.Работает в консольном приложении.

У меня похожая проблема.

В моем сценарии я смог создать экземпляр SPSite из консольного приложения, но когда другой партнер по команде попытался это сделать, приложение выдало то же исключение, что и упомянутое выше.

Решение:Я добавил другого товарища по команде в качестве администратора на сервере Content Db (возможно, это возможно не для всех), код работает нормально и ошибок нет

Та же проблема в SharePoint 2010.Однако проблема была с нашим веб-сервисом, который получал доступ к объектной модели SharePoint.Пул приложений, под управлением которого должна запускаться эта служба, должен быть администратором фермы.

Переход на NUnit может быть вариантом не для всех.
В моем случае проблема заключалась в том, что я был на 64-разрядном сервере, у меня был проверен любой процессор (так что он выбирал правильную версию), но мои настройки тестирования были установлены на "Принудительно запускать тесты в 32-разрядном процессе" (ОГО!)

В MSTest перейдите в раздел TEst-> Edit Test Settings-> Trace и Test Impact.
Выберите Хосты.
Убедитесь, что вы используете правильную версию.Here's what you should be picking

Вот мой контрольный список для VS2010 SP1, MSTest.

  • Вам нужен пакет обновления 1, чтобы вы могли настроить таргетинг тестов на .NET 3.5.Это не будет работать с .NET 4.0
  • Убедитесь, что сайт загружается - я запустил сайт непосредственно из редактора VS2010, поскольку это гиперссылка
  • Проверьте настройки сборки.Выбрать 64-разрядный, если сервер 64-разрядный.
  • В моем случае у меня был 64-разрядный сервер, но выбрать x64 не удалось бы!Это была моя первая подсказка.
  • Убедитесь, что настройки теста поддерживают правильные биты.

У меня была такая же проблема при попытке получить доступ к Sharepoint 2010.

Я исправил это, изменив целевую платформу на .NET 3.5. - которая является поддерживаемой версией для Sharepoint 2010.

В моем случае это определенно была проблема с разрешениями учетной записи, с помощью которой я вошел в Windows.

Попробуйте выполнить эту команду в командной строке SharePoint, работающей от имени администратора:

Получить-SPSite 'http://yoursite/yourcollection'

Если вы получаете ошибки, войдите на сервер SharePoint от имени пользователя пула приложений или учетной записи, используемой для установки SharePoint, и повторите попытку приведенной выше команды.

Если это сработает, значит, вы знаете, что у вашей предыдущей учетной записи была проблема с разрешениями.Чтобы устранить проблему, запустите эту команду в том же окне командной строки и укажите учетную запись, которую вы хотите использовать в VS:

Добавить-SPShellAdmin -Имя пользователя Домена\User

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

  1. Изменение целевой платформы в visual Studio на x64
  2. убедитесь, что вы используете visual Studio в режиме "Администратор".
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top