Request的参数能重写吗?

石头子 石头子 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
加了一个httpModules
//从网上找了一个例子,想过滤一下Request参数,但提示Request.Form和Querystring是只读的
//如何才能重新设置一个新的Request送到页面?


public class MyHandlerFactory : IHttpHandlerFactory
{
public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
{

PageHandlerFactory factory = (PageHandlerFactory)Activator.CreateInstance(typeof(PageHandlerFactory), true);
IHttpHandler handler = factory.GetHandler(context, requestType, url, pathTranslated);
//执行一些其它操作
Execute(handler);
return handler;
}



private void Execute(IHttpHandler handler)
{

if (handler is Page)
{
//可以直接对Page对象进行操作

((Page)handler).PreLoad += new EventHandler(MyHandlerFactory_PreLoad);



}

}



void MyHandlerFactory_PreLoad(object sender, EventArgs e)
{

//((Page)sender).Response.Write("Copyright @Gspring<br/>");
//处理contxt 过滤危险字符测试
Page h = (Page)sender;

for (int i = 0; i < h.Request.QueryString.Count; i++)
{
string key = h.Request.QueryString.GetKey(i);
string value = h.Request.QueryString[i].ToString();
//想在这里重新设置一下Request.QueryString的值
}
for (int i = 0; i < h.Request.Form.Count; i++)
{
string key = h.Request.Form.GetKey(i);
string value = h.Request.Form[i].ToString();
//想在这里重新设置一下Request.Form的值
}

}

///
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
石头子
C# 111,129 成员 642,540 内容