仓酷云

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

[学习教程] 来一篇关于NET的在asp.net中对url地点一致编码的示例

[复制链接]
山那边是海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:21:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
来吧!老师们!我代表千千万万的asp.net/C#的初学者在这里呼唤着!由于本人如今地点项目中良多url传值的中央都未将值经由Server.UrlEncode编码而间接传值,以是形成在传值的时分存在大批毛病。好比值中存在汉字,大概存在+,/等特别标记时,吸收到的值就和本来的传的值纷歧样了。以是我们在url传值时必定要将值经UrlEncode编码后再传,url的编码可参看本站:
Url编码与解码剖析

但如今项目中已存在大批的没有编码的情形该怎样办呢?一个一个往改的话,总会存一些没有改到的中央。以是盘算增加IhttpModel类,在HTTP实行管线链中的第一个事务BeginRequest中对未编码的url参数举行编码。

示比方下:
注:本示例只起一个引子的感化,未列出一切特别标记的交换。

我们鄙人面的示例中演示将url中的+号交换成"%2B"。由于间接传+号,吸收到的值会是一个空格。
publicclassSHttpModule:IHttpModule
{
privateList<Pair>_encodelist;
///<summary>
///须经url编码的字符
///</summary>
publicList<Pair>EncodeList
{
get
{
if(_encodelist==null)
{
_encodelist=newList<Pair>();
}

        //在这个list中能够增加更多的须编码的字符
_encodelist.Add(newPair("+","%2B"));

return_encodelist;
}
}

publicvoidInit(HttpApplicationHttpApplication)
{
//BeginRequest事务为http实行管线链中第一个产生的事务,在这个事变中,我们能够将未经编码的特别字符替换成编码后的字符,然后使用RewritePath办法重写url地点。
HttpApplication.BeginRequest+=newEventHandler(HttpApplication_BeginRequest);
}

voidHttpApplication_BeginRequest(objectsender,EventArgse)
{
HttpApplicationApplication=(HttpApplication)sender;
HttpContextcontext=Application.Context;

stringpath=Application.Request.Url.PathAndQuery;
//由于url中的#有着特别的意义,它取代页面将跳转到指定的锚文本上。以是在没有锚文本的情形下,是不该该呈现#标记的。
if(path.Contains("#"))
{
context.RewritePath("/堕落页面");
}

boolisEncode=false;
if(!path.Contains("%"))
{
foreach(PairpinEncodeList)
{
if(path.Contains(p.First.ToString()))
{
path=path.Replace(p.First.ToString(),p.Second.ToString());
isEncode=true;
}
}

if(isEncode)
{
context.RewritePath(path);
}
}
}

publicvoidDispose()
{

}


固然,该办法会存在一些缺点,好比经由RewritePath重写的url地点后会分明减轻服务器cpu的包袱。另有大概形成页面回发毛病。详细办理办法与HttpModule模块的注册请检察本站:
怎样经由过程RewritePath办法重写Url地点完成伪静态在CSDN里搜索一下“初学”两字,竟有三百余篇帖子(也许更多)。有些帖子说,有了asp的基础,只要15天就能很熟悉了,我甚感自己的愚钝。更多帖子是向大家请教初学者适合看书。两个多月的时间(当然平常杂事比较多。
沙发
发表于 2015-1-18 13:21:27 | 只看该作者
微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。
柔情似水 该用户已被删除
板凳
发表于 2015-1-26 21:19:27 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
谁可相欹 该用户已被删除
地板
发表于 2015-2-4 21:52:31 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
飘飘悠悠 该用户已被删除
5#
发表于 2015-2-10 21:40:27 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
小女巫 该用户已被删除
6#
发表于 2015-3-1 15:47:16 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
若相依 该用户已被删除
7#
发表于 2015-3-10 20:45:54 | 只看该作者
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
飘灵儿 该用户已被删除
8#
发表于 2015-3-17 11:03:37 | 只看该作者
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
小魔女 该用户已被删除
9#
发表于 2015-3-24 08:37:34 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 17:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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