摘要: 在总体介绍了筛选器及其提供机制(《深入探讨ASP.NET MVC的筛选器》)之后,我们按照执行的先后顺序对四种不同的筛选器进行单独介绍,首先来介绍最先执行的AuthorizationFilter。从命名来看,AuthorizationFilter用于完成授权相关的工作,所以它应该在Action方法被调用之前执行才能起到授权的作用。不仅限于授权,如果我们希望目标Action方法被调用之前中断执行的流程“做点什么”,都可以以AuthorizationFilter的形式来实现。[本文已经同步到《How ASP.NET MVC Works?》中]目录一、IAuthorizationFilter二、Au 阅读全文
posted @ 2014-03-21 15:34 繁华落尽、 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 前几天有一个朋友在MSN上问我“ASP.NET从最初的接收到Http request到最终生成Response的整个流程到底是怎样的?”我觉得这个问题涉及到IIS和ASP.NETASP.NET Runtime的处理模型的问题,并不是三言两语就能说清楚的,所以决定写这样一篇介绍IIS和ASP.NET Runtime Process Model的文章,谈谈我对此的一个粗浅的认识,如果有什么不对的地方,希望大家及时指正。这篇文章大体分为两个部分,第一部分我将谈谈IIS的两个不同的版本—IIS 5.x和IIS 6(虽然IIS 7已经Release很长时间了,而且较之前两个版本发生了非常大的变化,由于本 阅读全文
posted @ 2014-03-21 14:59 繁华落尽、 阅读(573) 评论(0) 推荐(0) 编辑
摘要: 在《再谈IIS与ASP.NET管道》介绍各种版本的IIS的设计时,我们谈到IIS 7.0因引入WAS提供了对非HTTP协议的支持。这个对于WCF的服务寄宿来说意义重大,它意味着我们通过IIS/WAS寄宿的服务终结点不仅仅可以采用BasicHttpBinding、WSHttpBinding/WS2007HttpBinding等基于HTTP协议的绑定,也可以采用NetTcpBinding、NetNamedPipeBinding和NetMsmqBinding。在默认的情况下,IIS 7.0针对非HTTP支持的特性是关闭的。为了将一个IIS中的Web应用作为WCF服务的宿主,并采用非HTTP的通信协议 阅读全文
posted @ 2014-03-21 14:58 繁华落尽、 阅读(386) 评论(0) 推荐(0) 编辑
摘要: C# 3.0的扩展特性主要包括以下几点,我们在后面也会按照这个顺序进行介绍:1、隐式局部变量(implicitly typed local variables),通过初始化该局部变量的表达式自动推断出该变量的类型。2、扩展方法(extention methods),可以利用附加方法拓展已经存在的类型和构造类型。3、Lambda表达式(lambda expressions),匿名方法的革新,能够提供更好的类型推导以及到委托类型和表达式树的转换。4、表达式树(expression trees),允许Lambda表达式以数据(表达式树)的形式存在,而不是代码(委托)。5、对象初始化器(object 阅读全文
posted @ 2014-03-21 14:26 繁华落尽、 阅读(325) 评论(0) 推荐(0) 编辑
摘要: C# 4.0动态查找类型动态操作运行时查找示例带有动态参数的重载解析动态语言运行时已知问题命名参数和可选参数可选参数命名的和可选的实参重载解析互操作特性动态引入无PIA的编译ref 省略ref已知问题变性协变性逆变性限制COM Example COM示例Relationship with Visual Basic 与Visual Basic的关系资源简介Microsoft Visual C# 3.0作为Visual Studio 2008的一部分发布以来已经快一年了。在VS Managed Languages团队,我们一直努力创建该语言的下一个版本(没什么惊喜,就是C# 4.0),而这个文档是 阅读全文
posted @ 2014-03-21 14:25 繁华落尽、 阅读(1032) 评论(0) 推荐(0) 编辑
摘要: 在Mvc2.0中,新增加了一个特性就是Areas。在没有有使用Areas的情况下,我们的Mvc项目组织是下面这样的。当项目庞大的时候,Controllers,Model,View文件下下面势必会有很多文件。项目将难以管理。 通过使用Areas使我们可以很好的组织项目,通过单机添加Areas(区域),使用Areas来组织项目。可以得到新的项目组织结构。 First,Second对应着我们项目的子模块(First,Second命名不是很好)。在这两个文件夹下,有各自独立的Controllers,Models,Views。此外还多了个文件AreaRegistration为后缀的.cs文件. 这个文. 阅读全文
posted @ 2014-03-21 10:12 繁华落尽、 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 关于为什么使用异步Controller,这里不做备忘,三岁小孩都懂。主要的备忘是如何使用AsyncController。//这个action以Async结尾,并且返回值是void public void TestAsync() { //实现异步action加计数1 AsyncManager.OutstandingOperations.Increment(); FileStream fileStream = new FileStream(@"C:\Users\wuxq\Documents\Visu... 阅读全文
posted @ 2014-03-21 10:10 繁华落尽、 阅读(1320) 评论(0) 推荐(0) 编辑
摘要: 在Mvc源码的ControllerActionInvoker的InvokeAction方法里面有一个FindAction方法,FindAction方法在ControllerDescriptor里面定义为虚方法,而ReflectedControllerDescriptor是继承自ControllerDescriptor。其FindAction方法如下:public override ActionDescriptor FindAction(ControllerContext controllerContext, string actionName) { if (contro... 阅读全文
posted @ 2014-03-21 10:09 繁华落尽、 阅读(355) 评论(0) 推荐(0) 编辑
摘要: Mvc的过滤器是特性类,可以使我们在执行Action之前,执行Action之后,执行Action发生异常时,编写相关的处理代码实现某些逻辑。下面是四个基本的Filter接口。 上面这四个基本的Filter接口又被其他类所继承实现。框架图如下: 可以发现具体的Filter类,如ActionFilterAttribute或者AuthorizeAttribute除了各自实现基本接口IActionFilter和IAuthorizationFilter之外还继承抽象类FilterAttribute,而后者又继承自Attribute类。FilterAttribute除了一个protected的构造函数.. 阅读全文
posted @ 2014-03-21 10:06 繁华落尽、 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 其实关于Mvc的验证在上一篇已经有讲过一些了,可以通过在我们定义的Model上面添加相应的System.ComponentModel.DataAnnotations空间下的验证属性。在服务器端通过ModelBinder来接受提交的数据就能实现自动验证。如下例子. 定义一个PriceModelpublic class PriceModel { [Required]//通过定义这个实现Title字段为必输 [DisplayName("标题")] public string Title { get; set; } [Di... 阅读全文
posted @ 2014-03-21 10:05 繁华落尽、 阅读(687) 评论(0) 推荐(0) 编辑