配置方法: <httpModules>
<add name="FileEditModule" type="Framework.FileEditModule, Framework" />
</httpModules>
public class FileEditModule : System.Web.IHttpModule { public void Dispose() { } public void Init(HttpApplication application) { application.BeginRequest += new EventHandler(Application_BeginRequest); } public void Application_BeginRequest(object sender, EventArgs e) { HttpContext context = HttpContext.Current; HttpRequest request = context.Request; if (context.Request.HttpMethod != "POST") { return; } var file = request.InputStream; StreamReader sr = new StreamReader(file); string SourceCode2 = sr.ReadToEnd(); file.Seek(0, SeekOrigin.Begin); string SourceCode = ..修改方法(SourceCode2); if (SourceCode.Equals(SourceCode2)) { return; } byte[] sourceData = System.Text.Encoding.UTF8.GetBytes(SourceCode); //((System.Web.HttpInputStream)(file))._data._data //((System.Web.HttpInputStream)(file))._data{System.Web.HttpRawUploadedContent}System.Web.HttpRawUploadedContent BindingFlags bind = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase | BindingFlags.GetField; //Assembly systemWeb = Assembly.Load("System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); Assembly systemWeb = Assembly.GetAssembly(typeof(HttpRequest)); Type type = systemWeb.GetType("System.Web.HttpInputStream"); FieldInfo method = type.GetField("_data", bind); var data = method.GetValue(request.InputStream); var _data = data.GetType().GetField("_data", bind); var _length = data.GetType().GetField("_length", bind); var _expectedLength = data.GetType().GetField("_expectedLength", bind); var _completed = data.GetType().GetField("_completed", bind); var _dataValue = _data.GetValue(data) as byte[]; // _data.SetValue(data, sourceData); _length.SetValue(data, sourceData.Length); _expectedLength.SetValue(data, sourceData.Length); _completed.SetValue(data, true); } }