发布:2021/8/27 9:35:13作者:管理员 来源:本站 浏览次数:1026
配置方法:
<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);
}
}
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4