Asp.Net 拦截请求自定义处理

需求:在Aps.Net 应用中,对于浏览器请求的部分url的地址自定义处理,不交给路由系统或页面。解决方案:在全局文件Global.asax中 ,提供Application_BeginRequest 事件,这个事件可以监听到,本网站的所有请求都会经过这。此处根据url自定义输出响应内容,并结束响应就可以了。自定义拦截请求示例1:1.Global.asax 中代码处理
public class MvcApplication : System.Web.HttpApplication
{

    LogHelper.LogHelper _log = new LogHelper.LogHelper();
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
    /// <summary>
    /// 接收请求
    /// </summary>
    protected void Application_BeginRequest()
    {
        _log.WriteLine("请求地址:" + Request.Url.AbsoluteUri);
        //拦截请求
        string[] segments = Request.Url.Segments;
        if (segments.Length > 1 && segments[1].ToLower() == "testone")
        {
            //需要自己指定输出内容和类型
            Response.ContentType = "text/html;charset=utf-8";
            Response.Write("请求拦截处理");
            Response.End(); // 此处结束响应,就不会走路由系统
        }
    }
}
2.不拦截的默认Action 定义
public class TestOneController : Controller
{
    // GET: TestOne
    public ActionResult Index()
    {
        return Content("测试首页");
    }
}
注:调试说明,如果指定Response.End() ,就不会走路由系统,执行Action。  更多: 

相关内容推荐