Sunday, May 15, 2011

"Central Administration>General Application Settings>External Service Connections >Configure Send To Connections" code for this

This is the way we define a connection to a site where we would like to drop our documents.

 

Now in my case there could be hundreds of target sites created by code as and when required.

For each site created I want to write few lines of code which will do exactly what /_admin/OfficialFileAdmin.aspx  page does.

 

 

So i want code for what /_admin/OfficialFileAdmin.aspx ( Central Administration>General Application Settings>External Service Connections >Configure Send To Connections) does.

 

 

just try out like:
SPWebApplication app = SPWebApplication.Lookup(new Uri("http://hemant1236"));
SPOfficialFileHost host = new SPOfficialFileHost(true);
host.OfficialFileUrl = new Uri("http://hemant1236/testsite1/_vti_bin/officialfile.asmx");
host.OfficialFileName = "hemant1236Test1saurabh";
host.ShowOnSendToMenu = true;
host.Action = SPOfficialFileAction.Move;

host.Explanation = "created at Time" + DateTime.Now.ToString() + " by custom utility.";

app.OfficialFileHosts.Add(host);

app.Update();

Friday, May 13, 2011

Name cannot begin with the '\' character, hexadecimal value 0x5C

Hi

 

While extending a claim based web application I get the error :

Name cannot begin with the '\' character, hexadecimal value 0x5C. Line 858, position 42.

Troubleshoot issues with Microsoft SharePoint Foundation.

Correlation ID: b2bdf10b-33d2-4630-8bab-8054c6ce310c

Date and Time: 5/13/2011 3:16:10 AM

 

any idea why it happen so .

 

In the log:

 

 

05/13/2011 04:03:37.57     w3wp.exe (0x0954)                           0x1A00    SharePoint Foundation             Runtime                           tkau    Unexpected    System.Xml.XmlException: Name cannot begin with the '\' character, hexadecimal value 0x5C. Line 858, position 42.    at System.Xml.XmlTextReaderImpl.Throw(Exception e)     at System.Xml.XmlTextReaderImpl.ParseAttributes()     at System.Xml.XmlTextReaderImpl.ParseElement()     at System.Xml.XmlTextReaderImpl.ParseElementContent()     at System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)     at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)     at System.Xml.XmlDocument.Load(XmlReader reader)     at System.Xml.XmlDocument.Load(String filename)     at Microsoft.SharePoint.Administration.SPAspConfigurationFile.ApplyZoneSettingsToWebConfig(Uri responseUri, SPIisSettings settings)     at Microsoft.SharePoint.Administration.SPWebApplication.Provision()     at Microsoft.SharePo...    16bc3d6e-05e4-45d0-984c-813ed7e0c515
05/13/2011 04:03:37.57*    w3wp.exe (0x0954)                           0x1A00    SharePoint Foundation             Runtime                           tkau    Unexpected    ...int.ApplicationPages.ExtendWebFarmPage.BtnSubmit_Click(Object sender, EventArgs e)     at System.Web.UI.WebControls.Button.OnClick(EventArgs e)     at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)     at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)    16bc3d6e-05e4-45d0-984c-813ed7e0c515

Reply 1


In the app keys for main web application which is being extended; there was a key which referred a shared location like : "\\hemant1236\dropOff". The characters \\ in this app keys were the culprit. When I commented out this key , the web application was able to extend successfully.

Tuesday, April 19, 2011

get last app pool recycle timings

c:\Windows\System32\inetsrv\appcmd list wp  gives you all the process IDs

and on powershell  go for :

(Get-Process -Id [processID]).StartTime

You may also like:

Analyse event logs for Service Control Manager activities from windows

Sunday, April 17, 2011

Search History in SharePoint 2010

Did anyone got a chance to work on Search History?

 

We are able to get top Search Queries  , but we need to maintain log of all search keywords entered by all the users.  Is there something out of box for this?

 

Reply 1

here are some default Search Reports, but i do not recall it does keep track ALL the search keywords entered by user, the closest

You may refer http://blogs.msdn.com/b/ecm/archive/2010/05/03/web-analytics-in-sharepoint-2010-insights-into-reports-and-metrics.aspx for more information about the default search report.

 

Reply 1,1 we have tried it dear but we need to track all.Please help.Track all search keywords entered to be very specific .

Reply 1.1.1 You can create a hidden web part, place the hidden web part in the Search Result page, and the web part will retrieve the HTTP GET parameter, q=keyword, store it to a search keyword table, and make a report out of that table.




Kiat Hau, Goh http://kiatsplayground.blogspot.com/

Reply 1.1.1.1 If there is nothing out of box in SharePoint 2010 for this  , we will go for omniture - its just similar to google analytic .

 

Friday, April 15, 2011

SharePoint 2010 with IE 9

Hi

 

In IE 8 we used to have a  load bar in the browser . But in IE 9 when the page is loading a circle keeps on moving in the address bar-tab area.

 

I have a question now for my SharePoint site.

 

 

after the circle in the address  bar – tab  has stopped rotating  and when the page actually comes to the screen , there is a difference of 7 seconds!!!!!

 

 

If you have concrete explanation for this  or something like a wild guess please reply down.

 

P.S. 1 The issue is with latest version of IE 9 also downloaded today

P.S.2 One of the comment I got offline:

http://support.microsoft.com/kb/2398082

This issue can also occur if Internet Explorer 9 is running in Software Rendering mode.

By default, Internet Explorer 9 uses GPU Rendering mode. However, some outdated video cards and video drivers do not support GPU hardware acceleration. If Internet Explorer 9 determines that your current video card or video driver does not support GPU hardware acceleration, Internet Explorer 9 uses Software Rendering mode.

To determine whether Internet Explorer 9 is using Software Rendering mode, follow these steps:

Start Internet Explorer 9.

Click Internet Options on the Tools menu.

On the Advanced tab, locate the Accelerated graphics section.

Verify that the Use software rendering instead of GPU rendering check box is selected.

If this option is selected, Internet Explorer 9 is running in Software Rendering mode. If the option is greyed out, your current video card or video driver does not support GPU hardware acceleration.

Reply 1 http://social.technet.microsoft.com/profile/smidha/?ws=usercard-mini

I've experienced the same in Mozilla as well.

For IE9, also checked IE Options-> advanced -> Accelerated graphics section -> Use software rendering instead of GPU rendering check box is selected.

But no luck. A quick solution will be helpful.

Tuesday, February 22, 2011

User's Role Specific Theme - SharePoint 2010

e are digging out the possibility to give user's role specific themes in SharePoint 2010.

We are OK with going for custom coding for this.

Do you have any clues how to achieve this?

so based on:

 

http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/bc5c26e8-4a84-4120-9f44-ffb83db73836

http://efreedom.com/Question/1-2640711/Dynamically-Adding-CSS-File-ASPNET-Server-Control

 

http://stackoverflow.com/questions/2153310/user-specific-theme-in-sharepoint

http://efreedom.com/Question/1-2640711/Dynamically-Adding-CSS-File-ASPNET-Server-Control

 

we are going to override css in our custom control referred in the master page

 

Reply 1 http://social.technet.microsoft.com/profile/ishaan%20puniani/?ws=usercard-mini

take a look at :

 

http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/bc5c26e8-4a84-4120-9f44-ffb83db73836

to make it light weight you can write only those classes that modifies the Look nd feel of the site in the CSS .

Thursday, February 17, 2011

List Level backups for multiple sub sites -Poweshell

In SharePoint projects, there are scenarios, where a number of sub sites are created using a same template (now WSP).

We come across requirements where these templates require updation in due course of time.   And hence the sub sites already created may require an update. But it is not feasible to go to each and every sub site created and make the changes.

So best way could be take backup of variable components (   Lists) and then recreate all the sub sites and then restore back the lists to the newly   created sub sites.

The below mentioned   PowerShell script can be used to take backup export the content  from a specific named list in a shared folder structure, where each sub site will have a specific folder for backup in format cmp :

 

$mainBackuppath="\\abc2010\exportimport"

$File="export.txt"

Get-SPSite -Identity $spsite | Get-SPWeb -limit all| ForEach-Object {

 

 

 

if(($_.URL -eq $spsite+"/xyz") -or ($_.URL -eq $spsite+"") -or ($_.URL -eq $spsite+"/lmn") )

{

write-host -f Green  "Skipping " $_.URL

"Skipping " + $_.URL | Out-File $File -append

 

}

else

{

 

write-host -f Green "processing for "  $_.URL

"processing for " + $_.URL | Out-File $File -append

$currentSubSiteTitlewithoutspace= ""

$currentSubSiteTitlewithoutspace=$_.Title.Replace(" ","")

write-host -f Blue "Creating Directory: "$mainBackuppath"\"$currentSubSiteTitlewithoutspace

"Creating Directory: "+$mainBackuppath+"\"+$currentSubSiteTitlewithoutspace | Out-File $File -append

$error.clear()

 

[IO.Directory]::CreateDirectory($mainBackuppath+"\"+$currentSubSiteTitlewithoutspace)

if($error.count -gt 0){$error | out-file $File -append}

 

 

 

$filesystemPath=""

$filesystemPath = $mainBackuppath+"\"+$currentSubSiteTitlewithoutspace

 

if(Test-Path $filesystemPath)

{

$filesystemPath =$mainBackuppath+"\"+$currentSubSiteTitlewithoutspace+"\"+$currentSubSiteTitlewithoutspace+".cmp"

$DocLibPath=""

$DocLibPath= "/"+$_.Title+"/Shared Documents"

write-host  -f Yellow "Taking Backup for "$DocLibPath " at location " $filesystemPath "...."

"Taking Backup for "+$DocLibPath +" at location "+ $filesystemPath +"...."| Out-File $File -append

 

$error.clear()

export-spweb -identity $_.URL   -path  $filesystemPath   -ItemUrl $DocLibPath -Force -IncludeUserSecurity -IncludeVersions All | Out-File $File -append

if($error.count -gt 0){$error | out-file $File -append}

 

write-host  -f Yellow "Backup for "$DocLibPath " at location " $filesystemPath "Completed."

"Backup for "+$DocLibPath +" at location "+ $filesystemPath +"Completed."| Out-File $File -append

 

}

 

else

{

write-host  -f Red $filesystemPath  " does not exist."

$filesystemPath  +" does not exist." | Out-File $File -append

}

 

write-host -f Green "End of "  $_.URL"`n`n`n`n"

"End of "+  $_.URL+"`n`n`n`n"| Out-File $File -append

 

 

}

 

}

 

 

The below mentioned   PowerShell script can be used to restore backup /exported content  shared folder structure, where each sub site will have a specific folder for backup in format cmp, to the subsites created using new template :

 

 

$spsite= "http://abc:1104"

$mainBackuppath="\\abc2010\exportimport"

$File="export.txt"

Get-SPSite -Identity $spsite | Get-SPWeb -limit all| ForEach-Object {

 

 

 

if(($_.URL -eq $spsite+"/xyz") -or ($_.URL -eq $spsite+"") -or ($_.URL -eq $spsite+"/lmn") )

{

write-host -f Green  "Skipping " $_.URL

"Skipping " + $_.URL | Out-File $File -append

 

}

else

{

 

write-host -f Green "processing for "  $_.URL

"processing for " + $_.URL | Out-File $File -append

 

$currentSubSiteTitlewithoutspace= ""

$currentSubSiteTitlewithoutspace=$_.Title.Replace(" ","")

write-host -f Blue "Checking if directory exist for current web"

"Checking if directory exist for current web" | Out-File $File -append

$filesystemPath=""

$filesystemPath =$mainBackuppath+"\"+$currentSubSiteTitlewithoutspace+"\"+$currentSubSiteTitlewithoutspace+".cmp"

 

if(Test-Path $filesystemPath)

{

 

$DocLibPath=""

$DocLibPath= "/"+$_.Title+"/Shared Documents"

write-host  -f Yellow "Restoring  Backup at  "$DocLibPath " from  " $filesystemPath "...."

"Restoring  Backup at  "+$DocLibPath +" from  " +$filesystemPath +"...." | Out-File $File -append

 

$error.clear()

Import-SPWeb -Identity $_.URL -Path $filesystemPath  -IncludeUserSecurity  -Force -UpdateVersions Overwrite | Out-File $File -append

if($error.count -gt 0){$error | out-file $File -append}

 

write-host  -f Yellow "Backup for "$DocLibPath " at location " $filesystemPath "Completed."

"Backup for "+$DocLibPath +" at location " +$filesystemPath +"Completed." | Out-File $File -append

 

}

else

 

{

write-host  -f Red $filesystemPath  " does not exist."

$filesystemPath  +" does not exist." | Out-File $File -append

 

}

 

 

 

write-host -f Green "End of "  $_.URL"`n`n`n`n"

"End of "  +$_.URL+"`n`n`n`n" | Out-File $File -append

 

 

}

 

}

 

___________________________________________________________________________________________________________________

description of commands being used:

 

 

1.       Get-SPSite  : creates object for the spsite as given by identity parameter.

2.       Get-SPWeb -limit all  gets all the  spweb in the site collection

 

3.       Out-File $File –append   :  put entry in a log file.

 

4.       write-host -f Green "processing for "  $_.URL :  to write a text on screen

 

5.       $error.clear() : clears the current error

6.       [IO.Directory]::CreateDirectory()  : used to create a folder on the shared path

 

 

7.       if($error.count -gt 0){$error | out-file $File –append :  if the error count is greater than 0, that is logged in the log file.

 

 

8.       Test-Path $filesystemPath  : verifies if the folder has been created

 

9.       export-spweb -identity $_.URL   -path  $filesystemPath   -ItemUrl $DocLibPath -Force -IncludeUserSecurity -IncludeVersions All | Out-File $File –append

: the heart of all commands, which is actually creating the cmp file

 

10.   Import-SPWeb -Identity $_.URL -Path $filesystemPath  -IncludeUserSecurity  -Force -UpdateVersions Overwrite | Out-File $File –append

: the heart of all commands, which is actually restoring   the cmp file.