仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1573|回复: 7
打印 上一主题 下一主题

[DIV+CSS] 给大家带来URL重写完成IHttpHandler接口

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 00:23:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
强大的字体控制和排版能力。CSS控制字体的能力比糟糕的FONT标签好多了。
之前用url重写时是用的msurlrewriter,用了今后发明了良多不敷,自界说功效太弱,并且跟着重写划定规矩的增添,web.config大概会愈来愈年夜,实践上,url重写就是完成IHttpHandler接口.
全部流程分二步走:
1、用一个xml文件来存储重写划定规矩,个中这些划定规矩是一些复杂的正则表达式
2、完成IHttpHandler接口
起首看一下xml文件的格局:
以下是援用片断:
<?xmlversion="1.0"encoding="utf-8"?>
<root>
<regex>
<!--重写今后的假造地点-->
<b><![CDATA[xxx,(?<id>[0-9]+).html$]]></b>
<!--实践地点-->
<a><![CDATA[xxx.aspx?id=${id}]]></a>
</regex>
</root>
信任下面的xml人人都能看懂.
以下是援用片断:
usingSystem;
usingSystem.IO;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections.Generic;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Text;
usingSystem.Text.RegularExpressions;
usingMicrosoft.VisualBasic;
//RegexInfo布局,用来存储从xml文件中读取到的数据
publicstructRegexInfo
{
publicstring_before;
publicstring_after;
publicRegexInfo(stringbefore,stringafter)
{
_before=before.ToLower();
_after=after.ToLower();
}
}
//ipFilter布局,用来存储被封的IP
publicstructipFilter
{
publicstring_ip;
publicipFilter(stringip)
{
_ip=ip;
}
}
publicclassHtmlHttpHandler:IHttpHandler//完成IHttpHandler接口
{

privateList<RegexInfo>_regex_list=newList<RegexInfo>();
privateList<ipFilter>_ip_filter=newList<ipFilter>();
publicHtmlHttpHandler()
{
DataSetds=newDataSet();
//读取url重写划定规矩文件,并写进RegexInfo布局的实例中
ds.ReadXml(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Regexs.xml"));
foreach(DataRowrinds.Tables["regex"].Rows)
_regex_list.Add(newRegexInfo(((string)r["b"]).Trim(),((string)r["a"]).Trim()));
ds.Reset();
//读取被封的IP列表
ds.ReadXml(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/ipFilter.xml"));
foreach(DataRowrinds.Tables["IpFilters"].Rows)
_ip_filter.Add(newipFilter((string)r["ip"]));
}

publicvoidProcessRequest(HttpContextcontext)
{
string_ip=context.Request.UserHostAddress;//猎取IP
foreach(ipFilterrin_ip_filter)
{
if(_ip==r._ip)
{
context.Response.Write("对不起,您的IP:"+_ip+"已被限定!");
context.Response.End();
}
}
stringpath=context.Request.Path.ToLower();//猎取以后会见的重写过的子虚URL
foreach(RegexInforin_regex_list)
path=Regex.Replace(path,r._before,r._after);//婚配出其实在的URL
context.Server.Execute(path);
}

//OverridetheIsReusableproperty.
publicboolIsReusable
{
get{returntrue;}
}
}
OK,IHttpHandler接口就被完成了,上面稍配一下web.config就能够完成URL重写了
在web.config的<system.web></system.web>中到场:
以下是援用片断:
<httpHandlers>
<addverb="*"path="*.html"type="HtmlHttpHandler"/>
</httpHandlers>
暗示后缀名为.html的文件全体交给HtmlhttpHandler类去向理,最初配一下iis就好了。
至于简繁的转换,你能够加到ProcessRequest中,至于怎样完成转换见下一页。
</p>
每个声明内只能有一个属性,如果属性值中含有空格用双引号括起来例,在一个声明块内可以有多个声明,每个声明用分号隔开。
蒙在股里 该用户已被删除
沙发
发表于 2015-1-18 06:33:34 | 只看该作者
由CS4版本开始,则转用WebKit排版引擎(亦即GoogleChrome和AppleSafari浏览器所用的排版引擎)作为网页预览。
飘灵儿 该用户已被删除
板凳
发表于 2015-2-2 13:49:50 | 只看该作者
每天上网看着那样多的网页,于是我才下定决心选择了网页制作这一门课程,目的就是希望以后能够做出一个完美的网页来。
老尸 该用户已被删除
地板
发表于 2015-2-7 22:42:15 | 只看该作者
Adobe Dreamweaver CS5 软件使设计人员和开发人员能充满自信地构建基于标准的网站。由于同新的 Adobe CS Live 在线服务 Adobe BrowserLab 集成。
莫相离 该用户已被删除
5#
发表于 2015-2-23 17:38:55 | 只看该作者
经过两天的学习,总算对Dreamweaver有进一步的了解了,心中不免有些激动。今天和其他几位老师交流了一下,感觉受益匪浅.
飘飘悠悠 该用户已被删除
6#
发表于 2015-3-7 09:55:06 | 只看该作者
不管老师做怎样的解释,而我却对它感到很是吃力,诸如里面有许多不知道的功能。
小妖女 该用户已被删除
7#
发表于 2015-3-14 23:55:39 | 只看该作者
经过两天的学习,总算对Dreamweaver有进一步的了解了,心中不免有些激动。今天和其他几位老师交流了一下,感觉受益匪浅.
小魔女 该用户已被删除
8#
发表于 2015-3-21 18:12:37 | 只看该作者
还是在Dreamweaver所见即所得添加链接是,可以选中文字或图片然后按下shift键不放鼠标拖出箭头直接指向文件即可。这是比较简单的也是常用的方之一。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 06:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表