Archive for 'Technology'

“The page you are attempting to save has been modified by another user since you began editing”

Posted on 17. Dec, 2007 by .

1

I recently ran into an issue where editing content within a Content Editor web part would cause the following message to appear in the Publishing Toolbar:

The page you are attempting to save has been modified by another user since you began editing

At that point you would have to select “Save and Overwrite Changes” in order to proceed. This would happen any time that you edited a page, provided that you first selected “Edit Page” from the Site Actions menu. If you simply clicked the drop-down for the web part and selected “Modify Shared Web Part”, this problem would not appear.

After spending a significant amount of time troubleshooting the issue it was narrowed down to one of the customizations that was made to the master page. The Site Actions menu had been relocated to under the Quick Links menu.

I went back to the default.master page that ships stock with MOSS to try to reproduce the issue. Sure enough, if I put the Site Actions menu after the Publishing Console, I would receive the “page has been modified” error. If I put that Site Actions menu prior to the Publishing Console, everything would work fine.

After a little more than 5 hours troubleshooting the issue, it was determined that simply relocating the Site Actions menu to the top of the page was the simplest solution, however I would like to understand why it cannot follow the Publishing Console, or what needs to be done so it can.

Bookmark and Share

Continue Reading

Cleaning Up Orphaned Webs

Posted on 24. Oct, 2007 by .

0

Ran into an issue today with installing the October 9th SharePoint Security Patch. During the content database upgrade I received several errors that certain sites and webs were missing. This is due to the staging content database being migrated from a development content database, and there are slight differences in the configuration databases between the two environments. In any event, I found the following posting from Cory Burns that took care of the issue:

How to Clean Orphans from your environment.

(Be smart have backups prior whenever you are performing maintenance on your farm, use suggestions at your own risk.)

Configuration Orphans: These are the orphans that reside in your configuration database but have no child counterpart (contentDB entry). Cleaning these are the easiest of all the orphans. Simply detach the content database from your farm that was included in the result set and reattach it. This will refresh the sitelist that is tied to that content database and will remove the stale entry.

Sharepoint Tips and Tricks : Sharepoint Orphans Explained

Bookmark and Share

Continue Reading

Global Navigation Error After Creating Site from Site Template

Posted on 28. Sep, 2007 by .

0

Follow along:

  1. Create a new site template from SharePoint Designer.  Doesn’t really matter what the site template is for or what options you choose (based on my experience).
  2. Go into SharePoint and create a new site based on the new custom Site Template.
  3. Note that your top navigation bar (the global navigation) should now have a “Home” tab, and an “Error” tab.
  4. Click refresh.
  5. Your top navigation bar now appears as normal!

I’ll chalk this one up as a “feature”.

Bookmark and Share

Continue Reading

Unable to login to SharePoint Portal from SharePoint Server

Posted on 27. Sep, 2007 by .

1

One of our SharePoint servers at work was updated with the most recent round of security patches the other day.  Unfortunately, the result of this update was the inability to login to the SharePoint Portal from the server, and the search crawler not being able to access the site.

After some significant research on the matter I came across http://support.microsoft.com/kb/896861 which indicates that an IIS website that is using Integrated Windows Authentication and the URL is different from the computer name, will result in a 401.1 error.  The fix is to add the other names of the computer into a registry key and restart IIS.  After following the instructions in the knowledge base article I was able to login to the site from the server, and the search crawler was once again able to crawl the content.

Bookmark and Share

Continue Reading

Bluetooth Headset and Google Talk

Posted on 12. Sep, 2007 by .

0

Just to see if it would work, I decided the other day to pair my Motorola HS3 Bluetooth Headset with my Lenovo Thinkpad T60.

hs3

I have to admit that I am really digging using my headset with Google Talk and Messenger. I like having the option to switch into a voice chat from IM but maintain a form of privacy by using the headset. I think I’ll leave my headset paired with my computer and leave my phone out of it!

UPDATE:  Okay, I paved my laptop the other day and installed Vista, now I no longer have a working Bluetooth headset!  Apparently the Bluetooth stack in Vista does not include the drivers to support a Bluetooth headset :-( .

Bookmark and Share

Continue Reading

SQL 2005 Maintenance Plans and SharePoint

Posted on 11. Sep, 2007 by .

0

If you are using SPS 2003 or MOSS 2007 with a SQL Server 2005 box that does not have SP2 installed, you may discover that your crawls never complete.  There is a bug in SQL 2005 that if you have a Reindex Maintenance Plan it clears some attributes of the SharePoint indexes when it reindexes which in turn breaks the search functionality of SharePoint.  Long story short, consider SP2 for SQL 2005 to be a system requirement of SharePoint.  More information available here:  http://support.microsoft.com/kb/930887

Bookmark and Share

Continue Reading

Life Under a Rock

Posted on 10. Aug, 2007 by .

0

My family and I are having a new house built.  Seems appropriate, as my former abode was located under the following:

Big Rock

You think I’m kidding?  I assure you I am not.  And I offer as proof this tidbit:

Did you know that since Windows 2000 one could mount drives to a folder?  Chances are, you did know that.  Or, you were one of my neighbors.  Did I know that?  I vaguely remembered it, but was absolutely appalled that I have never put it to use. 

Okay, maybe you are in the dark ages with me (please say it is so!), the following article contains additional information:

http://pctoday.com/Editorial/article.asp?article=articles/2005/t0306/06t06/06t06.asp&guid=

I will not take this second chance at mount points lightly.  I am going to emerge from the dark ages of drive letters, I am going to install MOSS 2007 using mount points, and the world will rejoice! 

Stay tuned.  (or return to your rock)

Bookmark and Share

Continue Reading

SharePoint Licensing

Posted on 25. Jun, 2007 by .

0

Lots of people out there are asking the same questions regarding SharePoint licensing. Are CAL’s for concurrent users? Do I need both Standard and Enterprise CAL’s? Can I mix Standard and Enterprise CAL’s in a given environment?

It has been difficult finding definitive responses to these questions, and it seems like if you ask 5 people you get 5 different opinions on the licensing. Finally I ran across this great FAQ from the Microsoft Office group specifically on SharePoint licensing, which answers the above questions and many more:

Microsoft Office SharePoint Server 2007 frequently asked questions – SharePoint Server – Microsoft Office Online

Bookmark and Share

Continue Reading

My First Linq Program

Posted on 18. Jun, 2007 by .

0

I successfully coded my very first LINQ program today, and man is it a doozie!  Observe:

class Program
{
    static void Main(string[] args)
    {
        List<Student> studentList = new List<Student>();

        studentList.Add(new Student("Charlie", "Brown"));
        studentList.Add(new Student("Drew", "Carrie"));

        IEnumerable<Student> students =
            from
                Student
            in
                studentList
            where
                Student.LastName.Equals("Brown")
            select
                Student;

        foreach (Student student in students)
        {
            Console.WriteLine(student.FirstName);
        }

        Console.ReadLine();
    }
}

internal class Student
{
    private string _firstName;
    private string _lastName;

    public Student(string firstName, string lastName)
    {
        _firstName = firstName;
        _lastName = lastName;
    }

    public string LastName
    {
        get { return _lastName; }
        set { _lastName = value; }
    }

    public string FirstName
    {
        get { return _firstName; }
        set { _firstName = value; }
    }
}

 Which when run looks like:

CropperCapture[3]

I’m excited by the possibilities this offers, and am anxious to have an opportunity to explore all LINQ has to offer!

Bookmark and Share

Continue Reading

SPLimitedWebPartManager Memory Leak?

Posted on 05. Jun, 2007 by .

11

Have a look at the following code segment:

while(true)
{
    using (SPSite siteCollection =
        new SPSite("http://localhost"))
    using (SPWeb site =
        siteCollection.OpenWeb("/Marketing"))
    {
        SPFolder pagesFolder = site.GetFolder("Pages");

        foreach (SPFile page in pagesFolder.Files)
        {
            WL(page.Url);

            using (SPLimitedWebPartManager webPartManager =
                page.GetLimitedWebPartManager
                    (PersonalizationScope.Shared))
            {
            }
        }
    }
}

With this code segment I’m just connecting to a site and iterating over the page collection, grabbing and instance of the page’s SPLimitedWebPartManager as I go. Since SPLimitedWebPartManager implements the IDisposable pattern I am being a good citizen and wrapping its instantiation in a using {} block. The problem with this code segment is that this is what it does to the process memory:

image

Now, if I change the source code to this:

while(true)
{
    using (SPSite siteCollection =
        new SPSite("http://localhost"))
    using (SPWeb site =
        siteCollection.OpenWeb("/Marketing"))
    {
        SPFolder pagesFolder = site.GetFolder("Pages");

        foreach (SPFile page in pagesFolder.Files)
        {
            WL(page.Url);

            using (SPLimitedWebPartManager webPartManager =
                page.GetLimitedWebPartManager
                    (PersonalizationScope.Shared))
            {
                webPartManager.Web.Dispose();
            }
        }
    }
}

The memory picture looks much different now:

image

The only difference being the addition of an explicit Dispose() within the webPartManager using.

A look inside the SPFile.GetLimitedWebPartManager call reveals that it calls an internal GetLimitedWebPartManagerInternal() method on the SPFile SPWeb member variable. A closer look at this method shows the following code:

SPWeb web = this.Site.OpenWeb();
if (this.AllowUnsafeUpdates)
{
    web.AllowUnsafeUpdates = this.AllowUnsafeUpdates;
}
SPWebPartManager manager = web.GetWebPartManagerInternal(pageUrl, requestedView, forRender, includeHidden, out bytes);

We see here that a new SPWeb object is getting spun up, and in the call to GetWebPartManagerInternal an assignment is going to be made to the SPLimitedWebPartManager m_web member variable. If we look at the Dispose() implementation for SPLimitedWebPartManager, we see the following:

public void Dispose()
{
    if (!this.m_disposed)
    {
        if (this.m_manager != null)
        {
            this.m_manager.Dispose();
        }
    }
    else
    {
        return;
    }
    this.m_webParts = null;
    this.m_manager = null;
    this.m_disposed = true;
}

Nothing is being done to dispose of the m_web! If I explicitly dispose of m_web, then memory stays low.

Is anyone encountering the same?

Bookmark and Share

Continue Reading