Skip to main content

Debugging for SharePoint - Part 2


Problem

 At some point SharePoint developers will need to trace, log and debug their code when they get tripped up with bugs or any weird things when building custom solutions, applications, or components for SharePoint.

Solution

SharePoint hides the real detailed error messages and debug /tracing information which relate to the error. In order to display it we can debug SharePoint Applications & Solutions using the detailed steps below: 
  • Enable debug information and tracing over bugs and exceptions on WSS (Windows SharePoint Services) 3.0 & MOSS (Microsoft Office SharePoint Server) 2007 - Part 1.
  • Enable debug information and tracing over bugs and exceptions on SharePoint 2010 - Part 2.

Enable debug information and tracing over bugs and exceptions on SharePoint 2010 :

In WSS 3.0 / MOSS 2007, to allow debugging, we have to modify only the Web.Config which relates to your web application. But in SharePoint 2010, we have to modify two different Web.Config files by following the steps below:

I. Virtual Directory Web.Config File

 If we opened the target SharePoint solution using Visual Studio.net 2010 then select Debug or click F5, Visual Studio will prompt with a dialog box that alerts that the Web.Config file is not configured to enable debugging. The dialog box gives us the option of either running the project without debugging or modifying the Web.Config file to enable debugging.If we select the first option, the project runs normally. But if we select the second option the Web.Config file is configured to :            
  •  Turn on the Call Stack (CallStack="true")             
  •  Disable the custom errors in Visual Studio ()             
  •  Enable compilation debug ()
Note that:

We can configure the debugging manually as we did at Part 1 via:
  • Locate and open the "Web.Config" file . (Usually located at : "C:\Inetpub\wwwroot\wss\VirtualDirectoties\") .
  •  Search and find the line of code (below) and change the "debug" attribute to "true" and then save the changes :
    <compilation batch="false" debug="false">   into <compilation batch="false" debug="true">
  •  Search and find the following line of code and change the "CallStack" attribute to "true" and then save the changes :
    <SafeMode MaxControls="200" CallStack="false" ...>   into <SafeMode MaxControls="200" CallStack="true" ...>
  • Search and find the following line of code and change the "mode" attribute to "Off" and then save the changes:
    <customErrors mode="On" /> into <customErrors mode="Off" />
     

II. "LAYOUTS Web.Config File":

  •  Locate and open the LAYOUTS "Web.Config" file . (Usually located at : "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\Layouts") .
  •  Search and find the following line of code and change the "mode" attribute to "Off" and then save the changes:
    <customErrors mode="On" /> into <customErrors mode="Off" />
Note that:

According to the complex interactions between Visual Studio processes (of 'devenv.exe' and 'vssphost4.exe'), and the SharePoint and WCF layers, diagnosing errors that occur while building, deploying, etc...can be a challenge. In order to solve such errors, we can enable the enhanced debugging information by following the steps below:

  •  Go to the registry (Run > Regedit) in the windows registry.
  •  Go to [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\SharePointTools] .
  •  Right Click on SharePointTools and select Create new dword value. Name it "EnableDiagnostics" for the key and set the value from "0" to "1" (Setting this key value to "1" causes stack trace information to appear in the Output window "View (Menu) > Output" whenever project system errors occur while we are running in Visual Studio. To disable enhanced debugging information set the "EnableDiagnostics"  key value to "0".

Popular posts from this blog

How to deal with SharePoint 2010 exception "An exception occurred when trying to issue security token: The server was unable to process the request due to an internal error"

Scenario: You receive the below exception when you try to logon to a site that has been configured to use Claims Based Authentication with a custom membership provider using FBA credentials: Event ID from Event Log  - 8306 An exception occurred when trying to issue security token: The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.. Explanation: This error started to appear in our QA environment which does not have Visual Studio installed. I have tried starting the service "Claims to Windows Token Service" but that did not help either. I have made sure that all config...

Cascading drop down column in a SharePoint List

This article will show how to use codeplex project to achieve Cascading drop down columns in SharePoint list. This article will show how to achieve parent child relationship in column of SharePoint list.   Objective This article will show how to use codeplex project to achieve Cascading drop down columns in SharePoint list. This article will show how to achieve parent child relationship in column of SharePoint list. Step 1 Download the project from codeplex . Choose WSP file to download. To download the project Click here Step 2 After downloading the WSP add the solution using STSADM command. Navigate to BIN folder and add the solution. Command C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\BIN> stsa dm -o addsolution -filename c:\Stoneshare.CascadingDropDown.WithFilter.wsp Step 3 Open Central ADMIN and deploy solution. Navigate to Operation -> Global Configuration -> Solution Management. Select the Global Deployment option. St...

Programmatically adding documents to a document set sharepoint 2010

In continuation with the previous post about  how to create a document sets programmatically , here i will post a little code snippet for adding a document to this document set that we just created in our previous post. For this example i am adding a file to our custom document set which already exists on SharePoint server. You can however, use the file upload control to browse and add a file to your docuemntset. void addDocumentToDocuemntSet() { // Get the existing file SPFile spfile = web.GetFile(“http://SPSite:8080/Lists/DemoLib/abc.txt”); byte[] documentBytes = new byte[spfile.TotalLength]; if (spfile.Exists) { FileStream fs = new FileInfo(spfile.url).OpenRead() fs.Read(documentBytes, 0, (int)fi.Length); //add the default document to your document set template newDocumentSetTemplate.DefaultDocuments.Add(spfile.Name, web.ContentTypes["Document"].Id, documentBytes); } how to create a document sets programmatically