专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-963-0016      微信咨询  |  联系我们
位置:网站建设 > 技术支持 > asp.net 使用HttpModule对接收到的参数值进行修改
来源:网络整理     时间:2023/2/14 0:54:18    共 3648 浏览

配置方法:

    <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);

           }

       }


版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:C#判断Sql攻击 | ·下一条:数据库 'MessageManage' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有