因胸联盟 发表于 2015-1-16 22:24:06

ASP.NET网站制作之在 ASP.NET MVC 中利用 HTTPS

我觉得这个学习方法很重要。初学者应该跟我一样有同样一个毛病。那就是急于求成。很想就自己做出个小小的系统来。可真要动手,却又茫然而不知所措。为什么会这样呢?因为我们没有耐心去学习基础知识。写根本看不到什么效果的测试代码。某些平安性较高的网页,如网上付出或用户上岸页面,大概会利用到https(SSL/TLS)来进步平安性。本文先容了怎样在ASP.NETMVC中强迫某action利用https和怎样举行向https页面的跳转。我们先完成强迫一个action利用https。这里写了一个RequireHttpsAttribute,它的感化是将非https毗连转换成https毗连,如许一切利用了RequireHttps这个filter的controller城市强迫利用https毗连。1usingSystem.Web.Mvc;
2
3namespaceSnowdream.Demo.RequireHttps
4{
5publicclassRequireHttpsAttribute:AuthorizeAttribute
6{
7///<summary>
8///重写OnAuthorization办法
9///</summary>
10///<paramname="filterContext"></param>
11publicoverridevoidOnAuthorization(AuthorizationContextfilterContext)
12{
13//假如已是https毗连则不处置,不然重定向到https毗连
14if(!filterContext.HttpContext.Request.IsSecureConnection)
15{
16//猎取以后哀求的Path
17stringpath=filterContext.HttpContext.Request.Path;
18
19//从web.config中猎取host,也能够间接从httpContext中猎取
20stringhost=System.Configuration.ConfigurationManager.AppSettings["HostName"];
21
22//从web.config中猎取https的端口
23stringport=System.Configuration.ConfigurationManager.AppSettings["HttpsPort"];
24
25//假如端标语为空暗示利用默许端口,不然将host写成host:port的情势
26if(port!=null)
27{
28host=string.Format("{0}:{1}",host,port);
29}
30
31//重定向到https毗连
32filterContext.HttpContext.Response.Redirect(string.Format("https://{0}{1}",host,path));
33}
34}
35}
36}
37

因为https和https服务利用分歧的端标语,并且https不克不及绑定主机头,只能经由过程分歧端口的体例来辨别各个站点,以是这里将host和port信息写到了web.config里,以便利设置。在web.config的appsettings节到场以下信息便可

1<appSettings>
2<addkey="HostName"value="localhost"/>
3<addkey="httpsPort"value="443"/>
4</appSettings>
5
HttpsPort能够不写,将利用默许的443。
然后在要利用https毗连的controller或action前加上,如

1
2publicActionResultAbout()
3{
4returnView();
5}
6
如许,当我们用http://localhost/Home/About会见该页面时会主动跳到https://localhost/Home/About。可是如许另有一个成绩,网页中的链接都是http的,当点击进进必要利用https毗连的网页时都要举行一次Redirect。以是我们要将网页中的链接也改成https。这步不难,只必要将view中一切链接到https页面的Html.Action()利用得当的重载办法来写便可。ASP.NETMVC1.0RTM中供应了2种重载能够将protocol设置为https。在新建ASP.NETMVCWebApplication后默许天生的站点中,shared文件夹下有site.master文件中有个指向/Home/About的ActionLink。本来是

1Html.ActionLink("Home","Index","Home")
我们对其举行改写

1Html.ActionLink("About","About","Home","https","localhost","",null,null)
如许,天生出来的链接就是https的了,点击今后间接会利用https毗连而无需再举行一次Redirect,以后新的要到https页面的链接也可模仿次写法。
这里又要用到hostName信息,我们之前已将它写在web.config里了,以是能够专门写一个办法来猎取web.config中的这部分信息并拼接成这里必要的hostName字符串,大概还能够对HtmlHelper写一个扩大办法专门用于处置https的链接,这些能够在实践利用时做得当的优化。捆绑编译器。用户不需要受制于厂家,自己就能将程序在新平台上编译运行。除了牛B轰轰的linux,估计也没有系统捆绑c/c++的编译器,而且许多新平台都无法支持复杂的c/c++编译器在上面直接运行。

变相怪杰 发表于 2015-1-19 10:47:12

比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。

admin 发表于 2015-1-28 06:07:45

能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。

莫相离 发表于 2015-2-5 19:06:36

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。

活着的死人 发表于 2015-2-13 06:54:27

可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。

乐观 发表于 2015-3-3 18:49:58

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。

因胸联盟 发表于 2015-3-11 12:48:25

通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。

不帅 发表于 2015-3-18 19:40:49

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

简单生活 发表于 2015-3-26 14:42:49

众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
页: [1]
查看完整版本: ASP.NET网站制作之在 ASP.NET MVC 中利用 HTTPS