Проблема с Sharepoint Smartpart

Я новичок в программировании на Sharepoint, как и вся моя команда. Мы решили использовать интеллектуальные компоненты в качестве моста между sharepoint и нашими усилиями по разработке. После некоторых усилий мы запустили его. Однако проблема в том, что когда я использую простой пользовательский элемент управления для тестирования, с кодом sharepoint om, который получает имена файлов в библиотеке документов, sharepoint дает мне довольно полезное сообщение «Произошла неизвестная ошибка». Этот код отлично работает на странице aspx. Я написал еще один простой тестовый пользовательский элемент управления, который просто выполняет строку Response.Write (), чтобы проверить, есть ли проблема с выполнением кода, но он отлично работает и в интеллектуальной части.

Код выглядит как

protected void Button1_Click(object sender, EventArgs e)
{
            Microsoft.SharePoint.SPSite srv1 =
             new SPSite("http://server:port/");

            SPWeb web = srv1.OpenWeb();
            var list = web.GetFolder("http://server:port/documentLibrary");
            for (int i = 0; i < list.Files.Count; i++)
            {
                ListBox1.Items.Add(list.Files[i].Name);
            }
}

Что-то мы упускаем или делаем неправильно? Спасибо заранее...


person SirTwilight    schedule 23.11.2009    source источник


Ответы (3)


AFAIK, Smart Part действительно не нужен с SharePoint 2003. Почему бы вам просто не создать обычный пользовательский элемент управления и не поместить его в папку / ControlTemplates? Если необходимо, разверните его как часть функции со связанным кодом ...

Также обновите файл Web.Config для отображения значимых сообщений об ошибках:

  • customErrors = off
  • Включите трассировку стека, добавив CallStack = "true" в тег SafeMode.
  • Установите для атрибута отладки компиляции значение «true»
person IrishChieftain    schedule 23.11.2009
comment
Спасибо за совет, он оказался полезным. Кажется, я получаю это из-за проблемы с уровнем доверия. И это выглядит примерно так: Сведения об исключении: System.Security.SecurityException: запрос на разрешение типа «Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version = 12.0.0.0, Culture = нейтральный, PublicKeyToken = 71e9bce111e9429c» не выполнен. . - person SirTwilight; 24.11.2009
comment
Поместите его в GAC и попробуйте еще раз или увеличьте уровень доверия в файле Web.Config: codersbarn. ru /? tag = / webpart - person IrishChieftain; 24.11.2009
comment
Поправка: я должен был сказать понизьте уровень доверия! : -S - person IrishChieftain; 24.11.2009
comment
если вы поместите веб-часть в папку bin, вам нужно будет записать файлы политики CAS. Моя философия заключается в том, что когда клиент не запрещает явным образом, используйте GAC. У меня такое случалось только один раз, и это был банк, что вроде бы имеет смысл видеть, как любая dll в GAC получает автоматическое полное доверие и может делать с системой все что угодно. - person Colin; 01.12.2009

Замечание: как правило, вы должны заключать свои объекты SPSite и SPWeb в предложение using, поскольку это неуправляемые объекты, как описано здесь: http://msdn.microsoft.com/en-us/library/aa973248.aspx

protected void Button1_Click(object sender, EventArgs e)
{
 using (Microsoft.SharePoint.SPSite srv1 = new SPSite("http://server:port/"))
 {
  using (SPWeb web = srv1.OpenWeb())
  {
   var list = web.GetFolder("http://server:port/documentLibrary");
   for (int i = 0; i < list.Files.Count; i++)
   {
    ListBox1.Items.Add(list.Files[i].Name);
   }
  }
 }
}
person Dylan Berry    schedule 23.11.2009

Хорошо, решено, спасибо всем за информацию и помощь.

Речь шла об уровне доверия, и я установил уровень тяги на «WSS_Medium» в файле web.config соответствующего семейства сайтов.

<trust level="WSS_Medium" originUrl="" />

Я нашел это решение (вместе с некоторой более важной информацией по теме) в блоге Яна Тилена по адресу здесь

person SirTwilight    schedule 24.11.2009