Replace the CustomIDProvider.cs with the following code.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.Office.DocumentManagement;namespace DocumentIDProvider
{
public classCustomIDProvider : Microsoft.Office.DocumentManagement.DocumentIdProvider
{
private string idFormat = "{0} - {1}- {2}";
public overridestring[] GetDocumentUrlsById(SPSite site,string documentId)
{
string itemUrl =string.Empty;
// Only proceed if we have the site and document id
if (site !=null && !string.IsNullOrEmpty(documentId))
{
string[] splits = documentId.Split('@',' ');
string webName = splits.Length > 0 ? splits[0] : null;
string itemId = splits.Length > 1 ? splits[1] : null;
try
{
SPWeb web = string.IsNullOrEmpty(webName) ? site.OpenWeb() : site.OpenWeb(webName);
SPListItem item = null;
Guid itemGuid =new Guid(itemId);
// Find the item among the lists on the specified web
foreach (SPList list in web.Lists)
{
try
{
item = list.Items[itemGuid];
}
catch
{
//if it's not in this list, go to the next one
continue;
}
if (item != null)
{
itemUrl = web.Url + "/";
itemUrl += item.Url;
}
}
}
catch (Exception) { /* item not found, return an empty array*/ }
}
if (string.IsNullOrEmpty(itemUrl))
{
returnnull;
}
else
{
returnnew string[] { itemUrl };
}
}
public overridestring GenerateDocumentId(SPListItem listItem)
{
if (listItem ==null)
{
thrownew ArgumentNullException("listItem");
}
return string.Format(this.idFormat, listItem.Web.Title, listItem.ParentList.Title, listItem.ID.ToString());
}
public overridestring GetSampleDocumentIdText(SPSite site)
{
return string.Format(this.idFormat,"/", "0");
}
public overridebool DoCustomSearchBeforeDefaultSearch
{
get { return false; }
}
}
}