我正在做一个小型的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页面?
最好不要在项目结构中包含这些文件夹,而是拦截前往它们的请求。
答案 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中使用它的链接。实施起来非常快: