Red de conocimiento informático - Computadora portátil - En C#, ¿a qué espacio de nombres pertenece CommonModule?

En C#, ¿a qué espacio de nombres pertenece CommonModule?

//?

//?1. Utilice el módulo HTTP para controlar el ciclo de vida de la página.

//// 2. Personalice Response.Filter para obtener el flujo de salida y generar contenido estático (caché de disco) para páginas dinámicas.

// 3. Compresión GZIP de página.

// 4. OutputCache: caché de página de salida mediante programación.

///5. Elimina la cadena en blanco de la página. (Similar a Google)

//6. Elimina ViewState por completo. Elimine el NamingContainer basura generado por el control del servidor. Utilice tareas programadas para generar páginas a tiempo. (Este artículo no incluye la implementación de este enfoque)

//9.JS, compresión CSS, fusión, almacenamiento en caché y almacenamiento en caché de imágenes. (Debido a la extensión del artículo, este artículo no incluye la implementación de este enfoque)

//10. (Este artículo no incluye la implementación de la novena práctica)

//?

public?class?CommonModule?:?IHttpModule

{

public?void?Init(HttpApplication?application)

{

aplicación.BeginRequest?

privado.void.Application_BeginRequest( objeto.remitente, EventArgs.e)

{

var.context.HttpContext.Current;

var.request.context.Request;

var.url.request.RawUrl;?

var?response?=?context.Response;

var?path?=?CommonModule.GetPath(url);

var?file?=?new?FileInfo(ruta);

/?¿Usar compresión de página?

ResponseCompressionType?compressionType?=?this.GetCompressionMode(request);

if?(compressionType!=?ResponseCompressionType.None)

{

response.AppendHeader("Content-Encoding",?compressionType.ToString().ToLower());

if?if (tipo de compresión==?ResponseCompressionType.GZip)

{

respuesta.Filter?Filter,?CompressionMode.Compress);

}

}

if?(DateTime. Now.Subtract(file.LastWriteTime).TotalMinutes?

{

Respuesta.

TransmitFile(ruta);

if?(DateTime.Now.Subtract(file.LastWriteTime).TotalMinutes?

{

respuesta.ruta );

/?{

var?stream?=?file.OpenWrite();

respuesta.Filter?=?new?CommonFilter(respuesta. Filtro,?stream);

}

catch(Exception)

{

/Log.Insert("");?

}

}

¿privado?ResponseCompressionType?GetCompressionMode(HttpRequest?request)

{

cadena? AcceptEncoding?=?request.Headers["Accept-Encoding"];

if?IsNullOrEmpty(acceptEncoding))

return?ResponseCompressionType.None;

acceptEncoding?=?acceptEncoding.ToUpperInvariant();

if?(acceptEncoding.Contains("GZIP"))

return?ResponseCompressionType.GZip;

else?if?(acceptEncoding.Contains("DEFLATE"))

return?ResponseCompressionType.Deflate

else

return?ResponseCompressionType.None;

}

¿privado?{

público?estático?cadena?GetPath(cadena?url)

{

var?hash?=?Hash(url);

cadena?fold?=?HttpContext.Current.Server.MapPath("~/Temp/");

retorno ?hash);

}

público?static?string?Hash(string?url)

{

url ?=? url.ToUpperInvariant();

var?md5?ComputeHash(Encoding.ASCII.GetBytes(url));

var?s?=?new?StringBuilder(); p>

foreach(var?b?in?bs)

{

s.Append(b .ToString("x2").ToLower());

}

¿regresar?