Подтвердить что ты не робот

FileNotFoundException с помощью конструктора SPSite

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

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

У кого-нибудь появилась идея?

StackTrace:

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

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

4b9b3361

Ответ 1

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-адрес семейства сайтов или откройте Центр администрирования и создайте новую коллекцию сайтов.

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

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

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

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

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

Ответ 6

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

Ответ 7

Было бы полезно использовать Stacktrace исключения.

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

Ответ 8

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

Посмотрите на вас 12 улей для журнала. Если ваши настройки журнала верны, вы потеряете файл.

EDIT: проверьте также, ВСЕ ли ваши DLL находятся в GAC. Проверьте, содержит ли ваш файл web.config всю информацию: namespace, Classname, NameSpace, Version = version_number, Culture-your_culture, PublicKeyToken = your_signed_token

Ответ 9

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

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

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

Ответ 10

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

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

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

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

Ответ 11

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

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

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

Ответ 12

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

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

Ответ 13

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

Решением моей проблемы было зарегистрировать сборки SharePoint 12.0.0.0 в GAC. Это звучит не так, как ваша проблема, а просто FYI.

Ответ 14

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

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

Ответ 15

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

Ответ 16

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

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

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

Ответ 17

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

Ответ 18

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

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

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

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

Ответ 19

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

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

Ответ 20

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

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

Get-SPSite 'http://yoursite/yourcollection'

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

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

Добавить-SPShellAdmin -UserName Домен\Пользователь

Ответ 21

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

  1. Изменение цели платформы в visual studio на x64
  2. Убедитесь, что вы работаете в Visual Studio в режиме "Администратор".