代码改变世界

随笔分类 -  [04]ASP.NET MVC

MVC之前的那点事儿系列(8):UrlRouting的理解

2014-06-09 08:53 by 汤姆大叔, 9472 阅读, 收藏, 编辑
摘要: 文章内容根据对Http Runtime和Http Pipeline的分析,我们知道一个ASP.NET应用程序可以有多个HttpModuel,但是只能有一个HttpHandler,并且通过这个HttpHandler的BeginProcessRequest(或ProcessRequest)来处理并返回请... 阅读全文

MVC之前的那点事儿系列(7):WebActivator的实现原理详解

2014-06-06 08:46 by 汤姆大叔, 11237 阅读, 收藏, 编辑
摘要: 文章内容上篇文章,我们分析如何动态注册HttpModule的实现,本篇我们来分析一下通过上篇代码原理实现的WebActivator类库,WebActivator提供了3种功能,允许我们分别在HttpApplication初始化之前,之后以及ShutDown的时候分别执行指定的代码,示例如下:[ass... 阅读全文

MVC之前的那点事儿系列(6):动态注册HttpModule

2014-06-05 08:58 by 汤姆大叔, 10212 阅读, 收藏, 编辑
摘要: 文章内容通过前面的章节,我们知道HttpApplication在初始化的时候会初始化所有配置文件里注册的HttpModules,那么有一个疑问,能否初始化之前动态加载HttpModule,而不是只从Web.config里读取?答案是肯定的, ASP.NET MVC3发布的时候提供了一个Microso... 阅读全文

MVC之前的那点事儿系列(5):Http Pipeline详细分析(下)

2014-06-04 08:50 by 汤姆大叔, 7433 阅读, 收藏, 编辑
摘要: 文章内容接上面的章节,我们这篇要讲解的是Pipeline是执行的各种事件,我们知道,在自定义的HttpModule的Init方法里,我们可以添加自己的事件,比如如下代码:public class Test : IHttpModule{ public void Init(HttpApplicat... 阅读全文

MVC之前的那点事儿系列(4):Http Pipeline详细分析(上)

2014-06-03 08:55 by 汤姆大叔, 6230 阅读, 收藏, 编辑
摘要: 文章内容继续上一章节的内容,通过HttpApplicationFactory的GetApplicationInstance静态方法获取实例,然后执行该实例的BeginProcessRequest方法进行执行余下的Http Pipeline 操作,代码如下:// Get application ins... 阅读全文

MVC之前的那点事儿系列(3):HttpRuntime详解分析(下)

2014-05-30 08:56 by 汤姆大叔, 5770 阅读, 收藏, 编辑
摘要: 文章内容话说,经过各种各样复杂的我们不知道的内部处理,非托管代码正式开始调用ISPAIRuntime的ProcessRequest方法了(ISPAIRuntime继承了IISPAIRuntime接口,该接口可以和COM进行交互,并且暴露了ProcessRequest接口方法)。至于为什么要调用这个方... 阅读全文

MVC之前的那点事儿系列(2):HttpRuntime详解分析(上)

2014-05-29 08:42 by 汤姆大叔, 9926 阅读, 收藏, 编辑
摘要: 文章内容从上章文章都知道,asp.net是运行在HttpRuntime里的,但是从CLR如何进入HttpRuntime的,可能大家都不太清晰。本章节就是通过深入分析.Net4的源码来展示其中的重要步骤。请先看下图:首先,CLR在初始化加载的时候,会加载一个非常重要的类AppManagerAppDom... 阅读全文

MVC之前的那点事儿系列(1):进入CLR

2014-05-28 13:12 by 汤姆大叔, 14818 阅读, 收藏, 编辑
摘要: MVC之前的那点事儿系列,是笔者在2012年初阅读MVC3源码的时候整理的,主要讲述的是从HTTP请求道进入MVCHandler之前的内容,包括了原创,翻译,转载,整理等各类型文章,当然也参考了博客园多位大牛的文章,对此表示感谢,这次有时间贴出来,希望对大家有用。主要内容本文讲解的是:服务器接受Ht... 阅读全文

MVC之前的那点事儿系列

2014-05-28 12:06 by 汤姆大叔, 13502 阅读, 收藏, 编辑
摘要: MVC之前的那点事儿系列,是笔者在2012年初阅读MVC3源码的时候整理的,主要讲述的是从HTTP请求道进入MVCHandler之前的内容,包括了原创,翻译,转载,整理等各类型文章,当然也参考了博客园多位大牛的文章,对此表示感谢,这次有时间贴出来,希望对大家有用。MVC之前的那点事儿系列(1):进入... 阅读全文

大叔手记(20):ASP.NET MVC中使用jQuery时的浏览器缓存问题

2012-02-16 14:49 by 汤姆大叔, 9344 阅读, 收藏, 编辑
摘要: 介绍尽管jQuery在浏览器ajax调用的时候对缓存提供了很好的支持,还是有必要了解一下如何高效地使用http协议。首先要做的事情是在服务器端支持HTTP GET,定义不同的URL输出不同的数据(MVC里对应的就是action)。如果要使用同一个地址获取不同的数据,那就不对了,一个HTTP POST也不行因为POST不能被缓存。许多开发人员使用POST主要有2个原因:明确了数据不能被缓存,或者是避免JSON攻击(JSON返回数组的时候可以被入侵)。缓存解释jQuery全局对象里的ajax方法提供了一些options来支持缓存和Conditional GETs功能。$.ajax({ ifM... 阅读全文

大叔手记(18):利用Elmah和Google体验一把入侵的快感

2012-01-13 15:28 by 汤姆大叔, 14703 阅读, 收藏, 编辑
摘要: 介绍关于ELMAH,相信大家都不陌生了,最流行的错误日志记录组件,用过的人都知道其强大的威力,可以记录非常详细的错误信息供管理员和开发人员进行分析。Elmah配置起来也非常简单,但是同时也带来了一个问题:那就是如果配置不好的话,就会被入侵,而且入侵的方法非常非常简单,本文我讲演示一下,如何利用Elmah错误信息和Google搜索来入侵一个站点,同时本文也提供了正确的Elmah配置方法。原文整理自:http://www.troyhunt.com/2012/01/aspnet-session-hijacking-with-google.html注1:本人目的是让大家正确配置ELMAH,不是教大家入 阅读全文

大叔手记(17):大叔2011年读过的书及2012年即将要读的书

2012-01-04 09:39 by 汤姆大叔, 27172 阅读, 收藏, 编辑
摘要: 前言2011年是大叔最累的一年(基本上都是晚上12点以后睡觉,早上6点30分起),读得书也是异常的多,一方面要保持自己的技术在最前列,另外方面技术管理和项目管理方面的东西也要进一步进阶,2011年读过的书超过60本(也包括只收藏不读的书,还有一些非常小的英文电子书就不列了),除了一些大牛的书,其它的书基本上都是粗读的(一周一本),同时2012年的书也是按照这个计划来安排的,即:国际/国内大牛的书通读,一般的书粗读,以保证技术人员和管理人员的先进性:)。带 [荐]字的都是推荐大家读的。看了这篇帖子,大家千万别像我这么变态地读书,因为大叔已经不怎么亲自Coding了,所有以大量的时间读书。大叔在这 阅读全文

大叔手记(16):分析URL Routing和URL Rewriting两者之间的不同

2011-12-27 14:07 by 汤姆大叔, 11295 阅读, 收藏, 编辑
摘要: 前言前面有2篇帖子提到了关于URL Routing的特性,但是发现有很多人误会URL Routing就是URl Rewriting,其实2个虽然都提供相似的功能(提高友好的URL方便搜索引起收录),但是2者的原理和运行周期是完全不一样的,本篇文章我们就来分析一下具体有什么不同。例子在分析原理之前,我们先来做一个例子测试一下(IIS URL Rewrite模块需要IIS7的支持)。1.为Customer/1的URL建立对应的MVC程序首先建立一个普通的MVC3程序,建立一个简单的CustomerController以及一个简单的Detail action,代码如下:public class Cu 阅读全文

大叔手记(14):利用Routing特性提高ASP.NET MVC3站点的SEO权重

2011-12-23 14:21 by 汤姆大叔, 7023 阅读, 收藏, 编辑
摘要: 简介我们在开发互联网程序的时候,有个很重要的事情就是做搜索引擎优化(SEO),我们都知道ASP.NET MVC程序提供了友好的URL以及永久重定向的支持,这些友好的URL是利用Routing系统的特性来支持的,但是在这个Routing里有个问题,就是多个不同的地址和指向同一个action方法,那对于搜索引擎来说就意味着你的站点有很多地址的内容都是重复的。 本章内容将展示如果解决这一问题。正文对于SEO,一个地址对应一个唯一独立的内容是保证最好权重的一个重要步骤,所以我们需要确保每一个URL地址对应的内容都是不重复的(对于MVC来说也就是不同的Action),但ASP.NET MVC3程序默认是 阅读全文

大叔手记(9):小心使用IHttpHandler下的IsReusable属性

2011-12-17 20:39 by 汤姆大叔, 17866 阅读, 收藏, 编辑
摘要: 简介我们平时在开发的时候,经常做一些自定义的HttpHandler,每次再继承IHttpHandler接口的时候,都要设置IsReusable的值,通常我们都是设置返回true,可是我们要小心这个返回值,因为设置为true的时候有很多前提条件,其中最重要的2个是:线程要安全一个请求的HttpHandler实例下的状态或上下文信息不能被另外一个请求共享。再深一点MSDN对IsReusable的解释非常少:获取一个值,该值指示其他请求是否可以使用 IHttpHandler 实例。首先,IsReusable这个属性其实用来指明IHttpHandler实现类的实例是否可以被用来处理多个请求。当通过AS 阅读全文

大叔手记(6):巧用ASP.net MVC3里的HandleErrorAttribute

2011-12-15 08:42 by 汤姆大叔, 12097 阅读, 收藏, 编辑
摘要: 前言一直在给Team的人强调“Good programming is good Error Handling”,没人喜欢YSOD(Yellow Screen of Death)。我每次看到黄页的时候都是心惊肉跳的,尤其是在给客户演示的时候,所以在任何时候,如果出现黄页是由于你开发的代码导致的话,对不起,我会给你的绩效打很低的分。当然,有些情况的黄页,在某些特殊的情况,我们可能真的无法预知,但我们起码得一些技巧让终端用户看不到这个YSOD页面。方案幸运的是,在MVC3里有现成的功能支持让我们可以做到这一点,它就是HandleErrorAttribte类,有2种方式可以使用它,一是在类或者方法上直 阅读全文

【翻译】ASP.NET MVC:转化业务对象到Select List Items上

2011-11-18 10:41 by 汤姆大叔, 6254 阅读, 收藏, 编辑
摘要: 我们经常将一些业务对象的Class绑定到Dropdown box或Select List上,而且业务对象一般都会有基类。这篇帖子里我讲展示给大家的是如何利用业务对象的基类,写少量代码用扩展方法实现转换业务对象集合到ASP.NET MVC上的Select上。BusinessBase, BaseEntity和其他基类我喜欢为所有的业务类设置基类,以便于在上下文里我可以很容易地使用它们。 NB!很多人说为所有的业务类设置基类是不错的注意,它们也建议在数据库里用同样的方式,以便和基类进行mapping,但是有的人设置基类很不错,但是不建议在数据库层面也坐这种事情(比如,所有的业务对象都要包含标识)。具 阅读全文