不帅 发表于 2015-1-16 00:23:38

给大家带来URL重写完成IHttpHandler接口

强大的字体控制和排版能力。CSS控制字体的能力比糟糕的FONT标签好多了。
之前用url重写时是用的msurlrewriter,用了今后发明了良多不敷,自界说功效太弱,并且跟着重写划定规矩的增添,web.config大概会愈来愈年夜,实践上,url重写就是完成IHttpHandler接口.
全部流程分二步走:
1、用一个xml文件来存储重写划定规矩,个中这些划定规矩是一些复杂的正则表达式
2、完成IHttpHandler接口
起首看一下xml文件的格局:
以下是援用片断:
<?xmlversion="1.0"encoding="utf-8"?>
<root>
<regex>
<!--重写今后的假造地点-->
<b><!+).html$]]></b>
<!--实践地点-->
<a><!]></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 集成。

莫相离 发表于 2015-2-23 17:38:55

经过两天的学习,总算对Dreamweaver有进一步的了解了,心中不免有些激动。今天和其他几位老师交流了一下,感觉受益匪浅.

飘飘悠悠 发表于 2015-3-7 09:55:06

不管老师做怎样的解释,而我却对它感到很是吃力,诸如里面有许多不知道的功能。

小妖女 发表于 2015-3-14 23:55:39

经过两天的学习,总算对Dreamweaver有进一步的了解了,心中不免有些激动。今天和其他几位老师交流了一下,感觉受益匪浅.

小魔女 发表于 2015-3-21 18:12:37

还是在Dreamweaver所见即所得添加链接是,可以选中文字或图片然后按下shift键不放鼠标拖出箭头直接指向文件即可。这是比较简单的也是常用的方之一。
页: [1]
查看完整版本: 给大家带来URL重写完成IHttpHandler接口