We can include some more information like browser, client's IP address etc.
string result = "";
System.IO.StreamReader objReader = default(System.IO.StreamReader);
objReader = new System.IO.StreamReader("error.htm");
result = objReader.ReadToEnd();
objReader.Close();
result = result.Replace("{%Time%}", DateTime.Now.ToLocalTime().ToString());
result = result.Replace("{%ErrorUrl%}", Request.Url.AbsoluteUri.ToString());
result = result.Replace("{%Browser%}", Request.Browser.Type.ToString() +
"<br/>" + Request.Browser.Browser.ToString());
result = result.Replace("{%ClientIP%}", Request.UserHostAddress.ToString());
result = result.Replace("{%ErrorDetail%}", Context.Server.GetLastError().ToString());
if (Request.UrlReferrer != null)
{
result = result.Replace("{%ReferrerUrl%}",
Request.UrlReferrer.AbsoluteUri.ToString());
}
else
{
result = result.Replace("{%ReferrerUrl%}", "None");
}