Quantcast
Channel: SharePoint Diary
Viewing all articles
Browse latest Browse all 1058

Enable/Disable Custom Error by editing Web.Config using PowerShell

$
0
0
To reveal actual errors in SharePoint, we used to turn off custom error page by editing web.config file, located in the root of SharePoint virtual directory. sharepoint custom error page web.config
  • Open the web.config in Notepad
  • Search for "CallStack", Change it from "false" to "true"
  • Search for "CustomErrors mode", Change its value from "On" to "Off"
  • Save and Close.
Warning: Web.config file is highly sensitive! even a small typo may result your SharePoint site Crash!!

Typical SharePoint 2007 "Unknown Error"
sharepoint custom error web.config
 and SharePoint 2010's "An unexpected error has occurred"
 sharepoint 2010 web.config customerrors
Alright, Wouldn't it be a good idea to make these changes by PowerShell Scripts? Sure, Here is the PowerShell script to enable or disable SharePoint custom error page and reveal actual error by editing Web.Config file:

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

Function ConfigureCustomError()
{
Param( [Parameter(Mandatory=$true)] [string]$WebAppURL, [parameter(Mandatory=$true)] $Option )
<#
.Description
This PowerShell function Enables / Disables SharePoint Custom Error by editing web.config file
.Example
ConfigureCustomError "http://sharepoint.crescent.com" "OFF"
This disables SharePoint's default custom error page and reveals actual error
.Link
http://www.sharepointdiary.com
http://twitter.com/SharePointdiary
.Inputs
$WebAppURL - Web Application URL in which the Custom Errors to be set
$Option - ON or OFF
.Outputs
Sets "CustomErrors mode" and "CallStack" values in web.config file
#>

#Get the web application
$WebApp = Get-SPWebApplication $WebAppURL
#Get the Web Application Zone
$Zone = $WebApp.AlternateUrls[0].UrlZone
# Get the IIS settings for the zone
$IISSettings = $WebApp.IISSettings[$zone]
# Get the path from the settings
$WebConfigPath = $IISSettings.Path.ToString() + "\web.config"

#Backup web.config file
$now = [datetime]::now.ToString('dd-MM-yyyy hh-mm-ss')
$BackupFile =$IISSettings.Path.ToString()+ "\web.config.$now"
copy-item $WebConfigPath -destination $BackupFile

#Get the Web.config File
$XMLDoc = new-object System.Xml.XmlDocument
$XMLDoc.Load($WebConfigPath)
switch($option)
{
"OFF" {
#Apply Change
$XMLDoc.get_DocumentElement()."sharepoint".safemode.callstack = "True"
$XMLDoc.get_DocumentElement()."system.web".customErrors.mode = "Off"
Write-Host "Custom Error Mode has been Disabled, Now you can get the actual errors!"
}
"ON" {
$XMLDoc.get_DocumentElement()."sharepoint".safemode.callstack = "False"
$XMLDoc.get_DocumentElement()."system.web".customErrors.mode = "ON"
Write-Host "Custom Error Mode has been Enabled, SharePoint displays default custom error Page!"
}
}
$XMLDoc.Save($WebConfigPath)
}
#Call the function to Turn OFF custom errors
ConfigureCustomError "http://sharepoint.crescent.com" "OFF"

Viewing all articles
Browse latest Browse all 1058

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>