您的位置:首页 > 编程语言 > ASP

利用asp.net 2.0构建企业级门户平台(2、实现页面请求的调度)

2008-06-05 15:13 856 查看
页面调度采用了UrlRewrite技术

首先,让我们新建一个网站(我使用的是 VWD 2005 Express BETA2)。

1、添加一个default.aspx ,

该窗体不需要做什么工作,它的存在只有一个意义,就是告诉IIS 把类似的请求(www.xxx.com/)转过来,否则的话,ASP.NET是截获不到这种请求的。

2、我们在哪截获用户的请求呢?

当然是Global.asax了(当然了,你可以把代码放到Global.asax.cs中,或者自己实现IHttpModuler来达到类似的效果)。

代码如下:

Global.asax文件,只有一行,可以看出具体的代码文件都在Global.asax.cs里面

<%@ Application Language="C#" CodeBehind="Global.asax.cs" Inherits="Global" %>

Global.asax.cs文件:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

public class Global : System.Web.HttpApplication

从以上的代码可以看出:

除那三个特殊的路径外,其它的请求全部重写到"~/ApplicationTemplate/DefaultTemplate.aspx",

那么 DefaultTemplate.aspx 包含什么呢?

让我们新建一个文件夹 ApplicationTemplate 在该文件夹下新建一个web窗体 DefaultTemplate.aspx。

只 是为了演示UrlRewrite,DefaultTemplate.aspx中你可以输入一些简单的内容,如:“这是一个默认的模版”;

这样当我们请求“/default.aspx”时,呈现在我们面前的页面是DefaultTemplate.aspx的内容。

不信?你先动手试试吧!

3、如果我们想 把 / 重写到 ApplicatonTemplate/defaultTemplate.aspx,而把 /product/ 重写到ApplicationTemplate/ProductTemplate.aspx,怎么做呢?

首先我们在ApplicationTemplate文件夹下,添加一个ProductTemplate.aspx。

我们可能会想到在 Global.asax.cs 的 Application_BeginReque方法里再添加一个对路径的判断,显然这是不灵活的。

怎么更灵活呢?就让我们来设计一个页面调度引擎吧!

在这里,我们叫他 ApplicationManager。

添加一个类文件 ApplicationManager.cs , VWD提示我们要把它放到 App_Code目录下,就按它说的办吧!

该类有个方法叫 String GetNewPath(String oldPath);

我们要这个方法输入“/ default.aspx”返回 “~/ApplicationTemplate/DefaultTemplate.aspx”,

输入"/product/" 返回 “~/ApplicationTemplate/ProductTemplate.aspx”

如果输入的是“/Admin”,还应该返回“/Admin”。

我们假定GetNewPath()方法有这个功能,那么让我们改造一下 :Applicaton_BeginReques;

protected void Application_BeginRequest(Object sender, EventArgs e)

{

String appPath = Request.AppRelativeCurrentExecutionFilePath;

String newPath = ApplicationManager.GetNewPath(appPath)

if(newPath != appPath)

{

this.Context.RewritePath(newPath);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: