摘要:我们知道ASP.NET Page的生命周期实际上是ASP.NET Application的生命周期的一部分。这个周期经历了HTTP Module => HTTP Handler =>ASP.NET Page => Http Module这样一个过程。如果我们能更好地掌握这样一个过程,那么对单个ASP.NET Page的生命周期也能更好地了解:下面介绍如何编写一个简单的ASP.NET 页面和一个简单的HttpModule,对MSDN里提到的ASP.NET的生命周期进行验证1. 首先使用Visual Studio 2010建立一个空的ASP.NET网站 (ASP.NET 4.0)
阅读全文
摘要:问题定义:在使用Entity Framework时出现 System.Data.MetadataException: Unable to load the specified metadata resource 的错误。原因:ConnectionString的Metadata有错。解决方法:将connectionString="metadata=res:///Model.Project.csdl|res:///Model.Project.ssdl|res://*/Model.Project.msl;改为:connectionString="metadata=res://*/;即尝试从所有可能的
阅读全文
摘要:问题描述:ASP.NET使用表单验证在注销后浏览器仍然可以通过后退按钮回退到之前需要sign in才能看到的页面。问题原因:页面还保存在浏览器缓存中解决方案:一个可行的方案是为网站增加一个Exit.aspx页面,在其Page_Load方法里执行FormsAuthentication.SignOut(),同时使用JavaScript跳转到Logon页面。而SignOut按钮的唯一作用就是在客户端跳转到该Exit.aspx页面,而不是直接执行FormsAuthentication.SignOut():1. Web.config如下,指明authentication方式为forms,loginUrl
阅读全文
摘要:在使用.NET Ajax控件的时候,有时候我们会在HTML页面的source里发现SciptManager会产生如下的请求:这个时候如果在IIS6/7里面设置了Request Filtering,拒绝带双横线--的请求,就会导致此Ajax功能异常。之所以要对double-hyphen设置这样的deny规则,是因为在SQL注入里,双横线可以用来注释SQL语句的条件判断,这样导致非法的SQL语句可以执行。为了解决这个问题,可以针对带特定的extension后缀的页面设置该规则,而对.axd不设置该规则。在IIS7.5里,可以视作已经集成了用在IIS6上的URLScan的Rule功能,所以可是实现这
阅读全文
摘要:为什么要有Delegate?假设有两个不同类实现的对象A和B,A和B分别有方法a和b。现在需要a方法以一触发,便执行对象B的方法b。不使用delegate,我们可以在设计A类的时候在将B类作为参数传入a方法,这样可以实现我们的要求。但是这样做有明显的缺陷: 1. 我们需要事先知道B类。 2. 如果还存在C类、D类等的方法需要一并执行,这样必须重新修改A类的代码。如果有了Delegate,我们可以事先设计一个函数指针,这样当对象A执行a方法的时候,就可以根据该指针指向的,符合该函数指针法则的方法进行执行。这样,我们就不需要在设计A类的时候知道B类,只需要知道B的b方法的参数和返回值就可以了。
阅读全文