2011-09-28 80 views
0

我正在做一个小的ASP.NET 2.0。网站重构。ASP.NET网站中的不同请求url的一个自定义处理程序

目前有以下文件夹结构:

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

所有文件夹(服务1,2,3)含有一个几乎相同的Default.aspx,具有硬编码到web表单声明不同的内容。

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

我的问题是:

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

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

回答

1

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

下面是关于如何在ASP.NET WebForms中使用它的几个链接。这是相当快实现:

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

相关问题