Не уверен, где располагать Sharepoint SPWeb и SpSite - PullRequest
0 голосов
/ 20 октября 2019

Здравствуйте, у меня проблемы с утилизацией SPweb и SpSite. Веб-часть загружается со сверхнизкой скоростью, потому что объекты не обрабатываются должным образом. Я почти уверен, что его SPWEB и Spsite вызывают его и предложения. Я не уверен, как правильно распорядиться.

public Dictionary<string, List<string>> newData()
    {

        string url = HttpContext.Current.Request.Url.Host;
        SPSite siteCollectionOuter = new SPSite(url))
        SPWeb sPWeb = sPSite.OpenWeb();
        SPListCollection sPListCollection = sPWeb.Lists;

        Dictionary<string, List<string>> newData = new Dictionary<string, List<string>>();
        List<string> subject = new List<string>();

        if (sPListCollection.Count > 0)
        {
            foreach (SPList list in sPListCollection)
            {


                if (list.BaseTemplate == SPListTemplateType.DiscussionBoard)
                {

                    SPListItemCollection ListRows = list.Items;
                    SPListItemCollection oldTopics = list.Folders;



                    foreach (SPListItem topic in oldTopics)
                    {



                        if (topic["Subject"] != null)
                        {

                            subject.Add(topic["Subject"];


                        }

                        else
                        {
                            subject.Add("");

                        }        

                    }
                }

            }
            newData.Add("Subject", subject); 
        }

        return newData;

    }

Ответы [ 2 ]

0 голосов
/ 20 октября 2019
**will the code look like.** Should I also add try finally block like this. I am new to Sharepoint

SPSite oSPSite = null;
SPWeb oSPWeb = null;

try
{
   oSPSite = new SPSite("http://server");
   oSPWeb = oSPSite.OpenWeb(..);

   str = oSPWeb.Title;
}
catch(Exception e)
{
   // Handle exception, log exception, etc.
}
finally
{
   if (oSPWeb != null)
     oSPWeb.Dispose();

   if (oSPSite != null)
      oSPSite.Dispose();
}
/////////////////////////////////////////////////

    using(SPSite site=new SPSite(url))
    {
         using(SPWeb web=site.OpenWeb(nameOftheWeb))
         {
        SPListCollection sPListCollection = sPWeb.Lists;    
        Dictionary<string, List<string>> newData = new Dictionary<string, List<string>>();
            List<string> subject = new List<string>();

            if (sPListCollection.Count > 0)
            {
                foreach (SPList list in sPListCollection)
                {


                    if (list.BaseTemplate == SPListTemplateType.DiscussionBoard)
                    {

                        SPListItemCollection ListRows = list.Items;
                        SPListItemCollection oldTopics = list.Folders;



                        foreach (SPListItem topic in oldTopics)
                        {



                            if (topic["Subject"] != null)
                            {

                                subject.Add(topic["Subject"];


                            }

                            else
                            {
                                subject.Add("");

                            }        

                        }
                    }

                }
                newData.Add("Subject", subject); 
            }
         }
 return newData;

    }
         }
0 голосов
/ 20 октября 2019

Вы можете использовать оператор using.

using(SPSite site=new SPSite(url))
{
     using(SPWeb web=site.OpenWeb(nameOftheWeb))
     {
         // your code goes here
     }
}

Поскольку вы находитесь внутри WebPart, рассмотрите возможность использования класса SPContext. Предоставляет доступ к текущему сайту через SPContext.Current.Site

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...