How to get the full URL from SPListItem in SharePoint

The SPListItem URL property does return the URL for the SPListItem including the List/Documetn Library name, but it doesn’t return the full URL including the server and site names.

To get the full URL, you can either concatenate the SPLIstItem.Web.Url and the SPListItem.URL, or extract the full URL from the SPListItem.XML data like this:

 

foreach (SPListItem item in list.Items)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(item.Xml);
XmlNamespaceManager nsm = new XmlNamespaceManager(xmlDoc.NameTable);
nsm.AddNamespace("z", "#RowsetSchema");
string fullURL = xmlDoc.SelectSingleNode("z:row", nsm).Attributes["ows_EncodedAbsUrl"].Value;
}

 

Of course, you should add the usual error handling and checking.

 

How to disable the MySite and MyLinks in SharePoint and MOSS

I was struggling with this problem, but I did found that Michael Van Cleave had the solution.

 

Here’s the quote from his page:

Go to the Central Administration Web Page
Click on the link for Shared Services Administration
     –If you have more than one SSP, select the one that is running the MySites functionality
Under "User Profiles and My Sites" click Personalization Services Permissions

Select the group you want to limit the functionality for.  More than likely you will just have NTAuthority\Authenticated Users.

In the next screen you will see a list of checkboxes,
     –To disable MySites uncheck "Create Personal Site"
     –To disable MyLinks uncheck "Use Personal Features"

 

How to fix the The type Microsoft.SharePoint.Portal.Analytics.UI.ReportViewerMessages does not implement IReportViewerMessages or could not be found error

The type Microsoft.SharePoint.Portal.Analytics.UI.ReportViewerMessages, Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c does not implement IReportViewerMessages or could not be found

 This nasty error message appeared when I published my Reporting Services local report to a custom Web Part.

I solved this be comment out the ReportViewerMessages line in appSettings section in the web.config

<appSettings>
<!–  <add key="ReportViewerMessages" value="Microsoft.SharePoint.Portal.Analytics…… /> –>

So far, I haven’t seen any issues by commenting out this entry.

 

How to fix the Failed to load expression host assembly error in a SharePoint custom solution

I was writing a custom Reporting Services local report , placed in a SharePoint Web Part, and got this error:

Failed to load expression host assembly. Details: Could not load file or assembly ‘expression_host_31f4d73d84764f4b9a7332f3673bdf0b, Version=10.8.30729.1, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418)

This was fixed by setting the ExecuteReportInCurrentAppDomain property like so:

reportViewer1.LocalReport.ExecuteReportInCurrentAppDomain(System.Reflection.Assembly.GetExecutingAssembly().Evidence);
 

 

How to fix the The type specified in the TypeName property of ObjectDataSource could not be found error in a SharePoint custom solution

The type specified in the TypeName property of ObjectDataSource could not be found error

I was coding away happily developing a custom Reporting Services report for a SharePoint Web Part. The Web Part hosts a local Reporting Services report (.rdlc) and it’s using an ObjectDataSource as the data source, and I was getting the type specified in the TypeName property of ObjectDataSource could not be found error.

So in my code I have a data class with a select method, so my constructor looks like this:

ObjectDataSource ds = new ObjectDataSource(“MyNameSpace.MyClass”, “GetObjects”);

However, when executing the report, I got this error:

The type specified in the TypeName property of ObjectDataSource ” could not be found

I had put my assembly in the SafeControl section in Web.config, and the assembly was in the GAC.

It turns out that it also needs to be referenced in the <assemlbies> list of the <compiliaton> section, like this:

<compilation batch=”false” debug=”false”>

<assemblies>

<add assembly=”MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=123456789ABCDEF” />

</assemblies>

……

And now it worked.