The Problem
Today I was troubleshooting a problem on a content delivery server. I knew the problem was around configs, but I needed to see the combined config to determine what the exact problem was. Normally, I would login to Sitecore and go to /sitecore/admin/showconfig.aspx
and I would see a beautiful XML file that shows me the merged config.
The problem? The Sitecore back-end is removed on content delivery servers! There’s nowhere for me to login, and there’s now ShowConfig.aspx
.
What to do?
Idea
I remembered back to a Kam post in which he demonstrated how to login to Sitecore without credentials, as long as you had file system access. I have file system access to the CD right now… can I create my own ShowConfig?
Investigation
Using dotPeek, I reflected into Sitecore.Client.dll
and was able to see that all the ShowConfig.aspx file is is a call to CheckSecurity()
, followed by Factory.GetConfiguration()
which is dumped into the response. Simple enough, no?
Implementation
I created an XML file in the Website directory on the CD called ShowConfig.aspx
and copy/pasted the code from the real showconfig into it. I had to change around the formatting a bit in order to convert a .cs
file into an .aspx
file.
Here is the result:
<%@ Page Language="C#" AutoEventWireup="true">
<%@ Import Namespace="Sitecore.Configuration">
<%@ Import Namespace="System">
<%@ Import Namespace="System.Xml">
<%
XmlDocument configuration = Factory.GetConfiguration();
Response.ContentType = "application/xml";
Response.Write(configuration.OuterXml);
%>
It’s as simple as that! I can now navigate to /showconfig.aspx
and see the merged config on the CD instance.
Don’t forget to remove this file when you’re done!