Marc Lognoul's IT Infrastructure Blog

Cloudy with a Chance of On-Prem

SharePoint 2007: Post-SP2 Issue User Information Page URL leads to 400 or 404 when My Site is Disabled

MOSS 2007 SP2 introduced a fix for a bug related to the redirection of the User Information page (userdisp.aspx under WSS) redirected to people.aspx (under MOSS). This post will explain the behavior in details: http://blogs.msdn.com/b/dmp/archive/2009/01/21/user-information-page-userdisp-aspx-vs-person-aspx.aspx.

The problem occurs when you’re running a farm where My Site is disallowed or simply not configured: depending on the exact set-up, clicking on the user name will lead to HTTP Error 400 “Bad Request” or 404 Page not found”.

How to solve this? There are actually multiple ways:

1. Activating My Site

Activating and configuring My Site will actually restore MOSS’ standard behavior. There are of course obvious implications with this solution. If you do not wish to deal with them, look at solution 2 and 3 then!

2. Manually Editing the page userdisp.aspx

Backup then edit the page userdisp.aspx located under C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions12TEMPLATELAYOUTS

Find the line hereunder:

<SharePoint:DelegateControl runat=”server” id=”DelctlProfileRedirection” ControlId=”ProfileRedirection” Scope=”Farm” />

Replace Farm with Web so that it looks like:

<SharePoint:DelegateControl runat=”server” id=”DelctlProfileRedirection” ControlId=”ProfileRedirection” Scope=”Web” />

Save the file then execute IISRESET.

Note: you’ll have to repeat this operation on all Web Front-ends in the farm and keep in mind that this page might get updated with SharePoint hot fixes and service packs and therefore the customization lost.

2. Implementing a Delegate Control through a Feature

The redirection from userdisp.aspx to people.aspx is actually implemented by a control named ProfileRedirection.

In order to restore the pre-SP2 behavior, you can lower the priority of this control implementing a Delegate Control with a sequence number that will actually lower its priority. It would actually look like this:

<Control Id="ProfileRedirection" Sequence="50" ControlSrc=""/>

All you need to do is creating a simple feature with a definition that contains the line above. In order to prevent all odd behaviors implied by not having My Site enabled on the farm you may also want to add GlobalSiteLink1 and GlobalSiteLink2 to the list of controls:

<Elements xmlns=”http://schemas.microsoft.com/sharepoint/&#8221;>
<Control Id=”GlobalSiteLink1″ Sequence=”50″ ControlSrc=”” />
<Control Id=”GlobalSiteLink2″ Sequence=”50″ ControlSrc=””/>
<Control Id=”ProfileRedirection” Sequence=”50″ ControlSrc=””/>
</Elements>

Not feeling comfortable with creating you own feature? No problem, you can download this feature ready-to-use packaged as WSP and install it without any special intervention by executing the commands below:

stsadm -o addsolution -filename PreventMySiteRedirect.wsp
stsadm -o deploysolution -name PreventMySiteRedirect.wsp -immediate

Kudos to SharePoint MVP Stéphane Eyskens for pointing me in the right direction regarding Delegate Controls!

Marc

Advertisements

Author: Marc Lognoul

Relentless cloud professional. Restless rider. Happy husband. Proud father. Opinions are my own.

Comments are closed.