基本情况是这样
我有2个页面,采用IHttpHandler重写, 如
http://www.xx.com/news/admin.aspx
现在的情况是: 进入了ProcessRequest方法以后,如果我return,则页面为空白,如果我用context.Response.WriteFile(context.Request.PhysicalPath); 则输出了Admin.aspx的源文件,并不会被执行。
我想请教的是:当客户访问 /admin.aspx 时不重写并执行aspx代码,访问1.aspx 时输出非"管理员页面的内容"这几个字符。
我的代码如下:
/// <summary>
/// 重写前台静态页面
/// </summary>
public class UrlRewriterLogic : Page,IHttpHandler
{
/// <summary>
/// 根据URL读取此页面对应的内容
/// </summary>
/// <param name="context"></param>
void IHttpHandler.ProcessRequest(HttpContext context)
{
string RawUrl = context.Request.RawUrl.ToLower();
if (RawUrl.IndexOf("admin") != -1)
{
return;
}
context.Response.Write("非管理员页面的内容");
}
bool IHttpHandler.IsReusable
{
get { return true; }
}
}
简单啦,你在web.config中把news/admin.aspx的HttpHandler强制设定到ASP.NET的处理程序就OK啦.
比如在system.web.httphandler中加入:
<add verb="*" path="/news/admin.aspx" type="System.Web.Script.Services.ScriptHandlerFactory"/>