Расширение стандартных механизмов ASP.NET 4.0 Андрей Веселов
Расширение механизмов ASP.NET Собственный провайдер кэширования; Расширение механизма контроля запросов; Определение возможностей браузера; Экранирование вывода данных.
Провайдер кэширования using System.Web.Caching; public class CustomCacheProvider : OutputCacheProvider { public override object Add(string key, object entry, DateTime utcExpiry) { } public override object Get(string key) { } public override void Remove(string key) { } public override void Set(string key, object entry, DateTime utcExpiry) { } } 1. Реализовать абстрактный класс OutputCacheProvider 2. Указать используемый провайдер кэширования в web.config
Контроль запросов using System.Web.Util; public class CustomRequestValidator : RequestValidator { protected override bool IsValidRequestString( HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex) { … } 1. Реализовать абстрактный класс RequestValidator 2. Указать используемую реализацию в web.config
Определение возможностей браузеров using System.Web. Configuration; public class CustomHttpCapabilitiesProvider : HttpCapabilitiesProvider { protected override HttpBrowserCapabilities GetBrowserCapabilities(HttpRequest request) { … } 1. Реализовать HttpCapabilitiesProvider 2. Указать используемый класс в web.config
Определение возможностей браузеров using System.Web. Configuration; public class CustomHttpCapabilitiesProvider : HttpCapabilitiesDefaultProvider { protected override HttpBrowserCapabilities GetBrowserCapabilities(HttpRequest request) { var browserCaps = base.GetBrowserCapabilities(request); // дополнительная логика определения возможностей браузера return browserCaps; } 1. Реализовать HttpCapabilitiesProvider или наследника HttpCapabilitiesDefaultProvider 2. Указать используемый класс в web.config
Экранирование вывода данных using System.Web.HttpUtil; public class CustomHttpEncoder : HttpEncoder { protected override void HtmlEncode(string value, TextWriter output) { } protected override string UrlPathEncode(string value) { } protected override byte[] UrlEncode(byte[] bytes, int offset, int count) { } protected override void HtmlDecode(string value, TextWriter output) { } protected override void HtmlAttributeEncode(string value, TextWriter output) { } protected override void HeaderNameValueEncode( string headerName, string headerValue, out string encodedHeaderName, out string encodedHeaderValue) { } } 1. Реализовать наследника класса HttpEncoder 2. Указать используемый класс в web.config