none
Программный доступ к внешнему списку RRS feed

  • Вопрос

  • Добрый день!

    Помогите, пожалуйста, решить казалось бы простой вопрос.
    На ферме
    SP 2010 созданы два веб-приложения, А и В. Необходимо из веб-части на сайте
    приложения А получить доступ к списку, находящемуся на сайте приложения В. Доступ к сайту
    осуществляется классическим способом:

    SPSite bSite = new SPSite(“http://testportal:800/bsite/”);

    SPWeb bWeb = bSite.OpenWeb(“/bsite/bweb”);

    Этот код работает без проблем и я могу получить любой параметр сайта bweb. Но, когда я добавляю строку получения списка из этого сайта:

    SPList bList = bWeb.Lists[“ListName”];

    появляется окно ошибки «Нет доступа» с предложением выполнить вход в качестве другого пользователя. Применение метода SPSecurity.RunWithElevatedPrivileges(delegate() {…}); не помогает. Открывать анонимный доступ к списку нельзя. На веб-приложениях разные списки пользователей. Подскажите, как можно обойти эту проблему?




    31 августа 2022 г. 8:40

Ответы

  • Спасибо за ответы! Проблема решена. Причина - банальный недосмотр. У взаимодействующих семейств сайтов были разные учетные записи администраторов.
    • Помечено в качестве ответа Григорич 5 сентября 2022 г. 6:21
    5 сентября 2022 г. 6:21

Все ответы

  • Здравствуйте,

    Предпологаю Вы пользовались данным примером:

    SPSecurity.RunWithElevatedPrivileges(delegate()
                             {
                                 using (SPSite site = new SPSite(siteURL))
                                 {
                                     using(SPWeb web = site.OpenWeb())
    	     			 {
    					SPListItemCollection coll = web.Lists["ListName"].Items;
    				 }
    
                                  }
                             });
    Можете показать как выглядит ваш код и если имеется более подробная информация по ошибке в логах?


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    31 августа 2022 г. 11:53
    Модератор
  • Здравствуйте Максим.

    Мой код полностью совпадает с Вашим примером. Ошибки как таковой нет. Просто система требует авторизоваться для выполнения строки

    SPListItemCollection coll = web.Lists["ListName"].Items;


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

    1 сентября 2022 г. 6:41
  • Здравствуйте Максим.

    Мой код полностью совпадает с Вашим примером. Ошибки как таковой нет. Просто система требует авторизоваться для выполнения строки

    SPListItemCollection coll = web.Lists["ListName"].Items;



    Код корректный, попробуйте перезапустить IIS на WebApp, где развернули проект.
    1 сентября 2022 г. 6:53
  • Перегрузка IIS не помогла. Что интересно, этот код отлично работает в приложении Windows Forms, запущенном на сервере, где развернута ферма SharePoint, и не требует никакой авторизации.
    1 сентября 2022 г. 7:28
  • Спасибо за ответы! Проблема решена. Причина - банальный недосмотр. У взаимодействующих семейств сайтов были разные учетные записи администраторов.
    • Помечено в качестве ответа Григорич 5 сентября 2022 г. 6:21
    5 сентября 2022 г. 6:21
  • Спасибо, что отписались с решением!

    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    5 сентября 2022 г. 8:48
    Модератор