<%@ WebHandler Language="C#" Class="Article2006100201" %> using System; using System.Web; using System.Xml; using System.Threading; using System.Globalization; public class Article2006100201 : IHttpHandler { public void ProcessRequest (HttpContext context) { // Create XML document and its root node XmlDocument docResponse = new XmlDocument(); XmlElement elResponse = docResponse.CreateElement( "response" ); docResponse.AppendChild( elResponse ); try { // Get parameter string strCulture; if ( context.Request.QueryString != null && context.Request.QueryString[ "culture" ] != null ) { strCulture = context.Request.QueryString[ "culture" ]; if ( strCulture.Length > 0 ) { // A culture info is requested --> set it in the current thread CultureInfo oCultureInfo = new CultureInfo( strCulture ); Thread.CurrentThread.CurrentCulture = oCultureInfo; Thread.CurrentThread.CurrentUICulture = oCultureInfo; } } else { // Get the current culture's name to inform the client strCulture = Thread.CurrentThread.CurrentCulture.Name; } // Element XmlElement elCurrent = docResponse.CreateElement( "current" ); string strDate = DateTime.Now.ToLongDateString(); string strTime = DateTime.Now.ToLongTimeString(); elCurrent.SetAttribute( "date", strDate ); elCurrent.SetAttribute( "time", strTime ); elResponse.AppendChild( elCurrent ); // Element XmlElement elCulture = docResponse.CreateElement( "culture" ); XmlText nText = docResponse.CreateTextNode( strCulture ); elCulture.AppendChild( nText ); elResponse.AppendChild( elCulture ); // Status code "OK" context.Response.StatusCode = 200; } catch ( Exception ex ) { XmlElement elError = docResponse.CreateElement( "error" ); XmlText nErrorMessage = docResponse.CreateTextNode( ex.Message ); elError.AppendChild( nErrorMessage ); elResponse.AppendChild( elError ); context.Response.StatusCode = 500; } finally { // Set the response's content type. It must be XML! context.Response.ContentType = "text/xml; charset=utf-8"; // Save the XML document using the response's stream. This concludes the transaction docResponse.Save( new XmlTextWriter( context.Response.OutputStream, context.Request.ContentEncoding ) ); } } public bool IsReusable { get { return true; } } }