Если вы пытаетесь проанализировать ~ / из любого файла, включая текстовые файлы, JavaScript и т. Д., Вы можете написать обработчик, который назначит ему фильтр, и вы можете использовать его для поиска для этих путей ... например ...
public class StringParsingFilter : MemoryStream {
public Stream OriginalStream {
get { return this.m_OriginalStream; }
set { this.m_OriginalStream = value; }
}
private System.IO.Stream m_OriginalStream;
public StringParsingFilter() : base() {
this.m_OriginalStream = null;
}
public override void Flush() {
this.m_OriginalStream.Flush();
}
public override void Write(byte[] buffer, int offset, int count) {
//otherwise, parse for the correct content
string value = System.Text.Encoding.Default.GetString(buffer);
string contentType = HttpContext.Current.Response.ContentType;
//Do any parsing here
...
//write the new bytes to the stream
byte[] bytes = System.Text.Encoding.Default.GetBytes(value);
this.m_OriginalStream.Write(bytes, offset, count + (bytes.Length - buffer.Length));
}
}
И вы напишите собственный обработчик, чтобы знать, когда назначать этот фильтр ... как показано ниже ...
public class FilterControlModule : IHttpModule {
public void Init(HttpApplication context) {
HttpApplication oAppContext = context;
oAppContext.BeginRequest += new EventHandler(_HandleSettingFilter);
}
private void _HandleSettingFilter(object sender, EventArgs e) {
//You might check the file at this part to make sure
//it is a file type you want to parse
//if (!CurrentFile.isStyleSheet()) { return; }
...
//assign the new filter
StringParsingFilter filter = new StringParsingFilter();
filter.OriginalStream = HttpContext.Current.Response.Filter;
HttpContext.Current.Response.Filter = (Stream)filter;
}
}
Возможно, на самом деле проще было просто сказать «искать IHttpModules», но это некоторый код, который я использовал для анализа файлов по путям, отличным от файлов ASP.net.
Вам также придется изменить некоторые параметры в настройках IIS, чтобы разрешить анализ файлов, установив в ASP.net ISAPI подстановочный знак для всех обрабатываемых файлов. Вы можете увидеть больше на этом сайте , если вы используете IIS6, то есть ...
Вы также можете использовать это, чтобы изменить любые типы файлов, чтобы вы могли назначить некоторые фильтры для изображений, некоторые для javascript или таблиц стилей или ... на самом деле что-нибудь ...