Request的参数能重写吗?
石头子 2009-04-10 11:27:34 加了一个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的值
}
}
///