ASP.NET网站中不同请求URL的一个自定义处理程序

时间:2011-09-28 14:58:34

标签: asp.net

我正在做一个小型的ASP.NET 2.0。网站重构。

目前有以下文件夹结构:

/siteroot/services/home/service1
/siteroot/services/home/service2
/siteroot/services/home/service3
...

所有文件夹(service1,2,3)都包含几乎相同的default.aspx,其中不同的内容硬编码到Web表单声明中。

我的想法是创建一个service.aspx并在特定的URL请求上提供自定义页面(使用相同的模板)。

我的问题是:

如何将所有请求重定向到../services/home/service1,2,3到一个特定的处理程序/ aspx页面?

最好不要在项目结构中包含这些文件夹,而是拦截前往它们的请求。

2 个答案:

答案 0 :(得分:1)

一种方式:

  • 创建实现IHttpModule
  • 的自定义处理程序类
  • Init(HttpApplication application)中,为application.AuthorizeRequest
  • 注册方法
  • 在此方法中,根据需要解析((HttpApplication)sender).Request.Path,必要时使用HttpContext.Current.RewritePath指向“真实”service.aspx页面。

然后在<system.webServer><modules>注册自定义处理程序。

另一种方法是使用MVC样式的路由,它可以在没有MVC的情况下正常工作。详细信息在这里的问题的答案:custom URL Routing in asp.net

答案 1 :(得分:1)

如果您能够实现ASP.NET 3.5(在2.0 CLR上运行),那么路由听起来非常适合您需要实现的目标。通过这种方式,您可以根据特定格式拦截URL,然后将它们路由到单个页面或处理程序。您不需要每个服务的文件夹结构。

这里有一些关于如何在ASP.NET WebForms中使用它的链接。实施起来非常快: