仓酷云

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

[学习教程] ASP.NET网页编程之ASP.NET中UrlEncode应当用Uri.EscapeDataString()仓酷云

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:16:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我见过net网页编程运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《net网页编程的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。明天,茄子_2008反应他博客中的“C++”标签生效。反省了一下代码,天生链接时用的是HttpUtility.UrlEncode(url),从链接地点猎取标签时用的是HttpUtility.UrlDecode(url),从Encode到Decode,“C++”酿成了“C”(加号酿成空格)。这是人人熟知的成绩,这里我们剖析一下这个成绩,并给出办理办法。
先看一下成绩产生的历程:
1.原始链接:
  1. http://www.ckuyun.com/xd502djj/tag/C++/
复制代码
2.HttpUtility.UrlEncode以后,失掉:
  1. http://www.ckuyun.com/xd502djj/tag/C%2b%2b/
复制代码
3.Request.RawUrl,失掉:
  1. http://www.ckuyun.com/xd502djj/tag/C++/
复制代码
4.HttpUtility.UrlDecode,失掉:
  1. http://www.ckuyun.com/xd502djj/tag/C/
复制代码
下面第3步已失掉准确的了局,第4步的UrlDecode反而将加号变成了空格。
看来办理办法很复杂,作废画蛇添足的UrlDecode,入手下手我们也是这么干的。过了一段工夫,有效户反应“WindowsPhone”的标签生效了,酿成了“Windows+Phone”。我们一查,本来是在HttpUtility.UrlEncode时,空格被转换为加号,必要挪用UrlDecode将加号复原为空格,因而又把HttpUtility.UrlDecode加上(忘了之前的“C++”标签成绩)。然后,“C++”标签又生效...如许反重复复,看似Bug良多,事情很忙,实践上就是一个Bug...
终究有一天,我们说“不再能如许过”,入手下手寻觅办理计划:
既然HttpUtility.UrlEncode()不克不及用,那在.NET中找找有无替换品。
先找到了HttpUtility.UrlPathEncode()。嘿,有效,轻松弄定“C++”与空格成绩,可是...厥后发明弄不定“C#”,它没有对“#”举行编码。
持续寻觅...找到了Uri.EscapeUriString(),与HttpUtility.UrlPathEncode()一样的成绩。
持续寻觅...终究找到了...Uri.EscapeDataString(),弄定!请看上面的测试代码:

  1. publicvoidUrlEncodeTest(){stringurl="C++C#";Console.WriteLine(HttpUtility.UrlEncode(url));//C%2b%2b+C%23Console.WriteLine(HttpUtility.UrlPathEncode(url));//C++%20C#Console.WriteLine(Uri.EscapeUriString(url));//C++%20C#Console.WriteLine(Uri.EscapeDataString(url));//C%2B%2B%20C%23}
复制代码


注:运转情况.NET4。
可怜的程序员,还是逃不出移植的命运!
兰色精灵 该用户已被删除
沙发
发表于 2015-1-20 18:58:22 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
深爱那片海 该用户已被删除
板凳
发表于 2015-1-24 12:38:24 | 只看该作者
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
第二个灵魂 该用户已被删除
地板
发表于 2015-1-25 05:48:48 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
因胸联盟 该用户已被删除
5#
发表于 2015-1-29 13:34:05 | 只看该作者
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
若天明 该用户已被删除
6#
发表于 2015-1-31 17:00:07 | 只看该作者
asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!
莫相离 该用户已被删除
7#
发表于 2015-2-6 20:36:43 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
灵魂腐蚀 该用户已被删除
8#
 楼主| 发表于 2015-2-18 15:29:22 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
变相怪杰 该用户已被删除
9#
发表于 2015-2-20 00:45:18 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
精灵巫婆 该用户已被删除
10#
发表于 2015-3-6 15:47:33 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
愤怒的大鸟 该用户已被删除
11#
发表于 2015-3-7 10:37:02 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
谁可相欹 该用户已被删除
12#
发表于 2015-3-11 12:21:50 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
金色的骷髅 该用户已被删除
13#
发表于 2015-3-18 10:45:47 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-24 01:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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