博客园 - Fish Li
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=647458
2020-02-19T01:48:56Z
Fish Li
https://www.cnblogs.com/fish-li/
feed.cnblogs.com
https://www.cnblogs.com/fish-li/p/3139366.html
IIS日志-网站运维的好帮手 - Fish Li
对于一个需要长期维护的网站来说,如何让网站长久稳定运行是件很有意义的事情。有些在开发阶段没有暴露的问题很有可能就在运维阶段出现了,这也是很正常的。还有些时候,我们希望不断地优化网站,让网站更快速的响应用户请求,这些事情都发生在开发之后的运维阶段。与开发阶段不同的,运维阶段不可能让你去调试程序,发现各类问题,我们只能通过各种系统日志来分析网站的运行状况,对于部署在IIS上的网站来说,IIS日志提供了最有价值的信息,我们可以通过它来分析网站的响应情况,来判断网站是否有性能问题,或者存在哪些需要改进的地方。IIS日志包含了哪些信息我前面说到【IIS日志提供了最有价值的信息】,这些信息有哪些呢?看看这
2013-06-16T13:29:00Z
2013-06-16T13:29:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】对于一个需要长期维护的网站来说,如何让网站长久稳定运行是件很有意义的事情。有些在开发阶段没有暴露的问题很有可能就在运维阶段出现了,这也是很正常的。还有些时候,我们希望不断地优化网站,让网站更快速的响应用户请求,这些事情都发生在开发之后的运维阶段。与开发阶段不同的,运维阶段不可能让你去调试程序,发现各类问题,我们只能通过各种系统日志来分析网站的运行状况,对于部署在IIS上的网站来说,IIS日志提供了最有价值的信息,我们可以通过它来分析网站的响应情况,来判断网站是否有性能问题,或者存在哪些需要改进的地方。IIS日志包含了哪些信息我前面说到【IIS日志提供了最有价值的信息】,这些信息有哪些呢?看看这 <a href="https://www.cnblogs.com/fish-li/p/3139366.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2013/05/28/3104750.html
ASP.NET常被忽视的一些细节 - Fish Li
前段时间碰到一个问题:为什么在ASP.NET程序中定时器有时候会不工作?这个问题看起来很奇怪,代码好像也没错,但就是结果与预期不一致。其实这里是ASP.NET应用程序中一个容易被忽略的经节。后来想想,类似这样的细节问题何止这一个,我今天就把我能想到的容易被忽视的细节问题都写出来,希望大家小心这些问题。想到我以前的博客中也零散的说过了一些,所以这篇博客中也把它们列出来了,不过,对于以前谈过的内容,这里将只会简略地说明。HttpContext.Current并非无处不在这个问题是我上个月的博客中提到的问题,原文链接:http://www.cnblogs.com/fish-li/archive/20
2013-05-28T13:40:00Z
2013-05-28T13:40:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】前段时间碰到一个问题:为什么在ASP.NET程序中定时器有时候会不工作?这个问题看起来很奇怪,代码好像也没错,但就是结果与预期不一致。其实这里是ASP.NET应用程序中一个容易被忽略的经节。后来想想,类似这样的细节问题何止这一个,我今天就把我能想到的容易被忽视的细节问题都写出来,希望大家小心这些问题。想到我以前的博客中也零散的说过了一些,所以这篇博客中也把它们列出来了,不过,对于以前谈过的内容,这里将只会简略地说明。HttpContext.Current并非无处不在这个问题是我上个月的博客中提到的问题,原文链接:http://www.cnblogs.com/fish-li/archive/20 <a href="https://www.cnblogs.com/fish-li/archive/2013/05/28/3104750.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2013/05/05/3061816.html
在.net中序列化读写xml方法的总结 - Fish Li
XML是一种很常见的数据保存方式,我经常用它来保存一些数据,或者是一些配置参数。使用C#,我们可以借助.net framework提供的很多API来读取或者创建修改这些XML,然而,不同人使用XML的方法很有可能并不相同。今天我打算谈谈我使用XML的一些方法,供大家参考。最简单的使用XML的方法由于.net framework针对XML提供了很多API,这些API根据不同的使用场景实现了不同层次的封装,比如,我们可以直接使用XmlTextReader、XmlDocument、XPath来取数XML中的数据,也可以使用LINQ TO XML或者反序列化的方法从XML中读取数据。那么,使用哪种方法
2013-05-05T14:45:00Z
2013-05-05T14:45:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】XML是一种很常见的数据保存方式,我经常用它来保存一些数据,或者是一些配置参数。使用C#,我们可以借助.net framework提供的很多API来读取或者创建修改这些XML,然而,不同人使用XML的方法很有可能并不相同。今天我打算谈谈我使用XML的一些方法,供大家参考。最简单的使用XML的方法由于.net framework针对XML提供了很多API,这些API根据不同的使用场景实现了不同层次的封装,比如,我们可以直接使用XmlTextReader、XmlDocument、XPath来取数XML中的数据,也可以使用LINQ TO XML或者反序列化的方法从XML中读取数据。那么,使用哪种方法 <a href="https://www.cnblogs.com/fish-li/archive/2013/05/05/3061816.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2013/04/06/3002940.html
HttpContext.Current并非无处不在 - Fish Li
了解ASP.NET的开发人员都知道它有个非常强大的对象 HttpContext,而且为了方便,ASP.NET还为它提供了一个静态属性HttpContext.Current来访问它,今天的博客打算就从HttpContext.Current说起。无处不在的HttpContext由于ASP.NET提供了静态属性HttpContext.Current,因此获取HttpContext对象就非常方便了。也正是因为这个原因,所以我们经常能见到直接访问HttpContext.Current的代码:public class Class1{ public Class1() { strin...
2013-04-06T13:00:00Z
2013-04-06T13:00:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】了解ASP.NET的开发人员都知道它有个非常强大的对象 HttpContext,而且为了方便,ASP.NET还为它提供了一个静态属性HttpContext.Current来访问它,今天的博客打算就从HttpContext.Current说起。无处不在的HttpContext由于ASP.NET提供了静态属性HttpContext.Current,因此获取HttpContext对象就非常方便了。也正是因为这个原因,所以我们经常能见到直接访问HttpContext.Current的代码:public class Class1{ public Class1() { strin... <a href="https://www.cnblogs.com/fish-li/archive/2013/04/06/3002940.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2013/03/24/2979780.html
如何在ASP.NET应用程序中初始化 - Fish Li
每个程序都需要初始化的过程,用来读取配置或者设置一些运行环境(变量),对于ASP.NET程序来说,又该在哪里执行初始化的任务呢?我想应该绝大多数人都知道在Global.asax中执行初始化的过程,然而有些细节是我们需要关注的。本文用例在这篇博客的示例代码中,AppInitializer包含了网站的初始化的实现代码:public static class AppInitializer{ public static ConnectionStringSettings MyNorthwindConnectionSetting { get; private set; } public sta...
2013-03-24T14:11:00Z
2013-03-24T14:11:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】每个程序都需要初始化的过程,用来读取配置或者设置一些运行环境(变量),对于ASP.NET程序来说,又该在哪里执行初始化的任务呢?我想应该绝大多数人都知道在Global.asax中执行初始化的过程,然而有些细节是我们需要关注的。本文用例在这篇博客的示例代码中,AppInitializer包含了网站的初始化的实现代码:public static class AppInitializer{ public static ConnectionStringSettings MyNorthwindConnectionSetting { get; private set; } public sta... <a href="https://www.cnblogs.com/fish-li/archive/2013/03/24/2979780.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2013/03/12/2954997.html
Fish Li 该如何帮助您呢? - Fish Li
不知不觉中,来博客园写博已经二年了。经过二年时间的积累,人气提高了许多,或许正因为这个原因,最近一年中经常会收到一些朋友的提问。在所有的提问中,有些问题被多次问过了,还有部分问题是没有结果的。对于一些没有结果的问题,Fish Li也表示遗憾。趁着3月12日这个对于我来说特殊的日子里,我也想谈谈另一个问题:Fish Li 该如何帮助您呢?下面我将对一些无结果的问题再次给予回答,虽然今天可能还是没有答案,但我要告诉您没有答案的原因。如何提问?不管是网上,还是周围的同事,我发现有人喜欢在反馈错误时,只说二个字:报错!说实话,您也太不专业了!您想想人家根据“报错”二个字,就能找到报错的原因吗?还有些人
2013-03-12T00:48:00Z
2013-03-12T00:48:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】不知不觉中,来博客园写博已经二年了。经过二年时间的积累,人气提高了许多,或许正因为这个原因,最近一年中经常会收到一些朋友的提问。在所有的提问中,有些问题被多次问过了,还有部分问题是没有结果的。对于一些没有结果的问题,Fish Li也表示遗憾。趁着3月12日这个对于我来说特殊的日子里,我也想谈谈另一个问题:Fish Li 该如何帮助您呢?下面我将对一些无结果的问题再次给予回答,虽然今天可能还是没有答案,但我要告诉您没有答案的原因。如何提问?不管是网上,还是周围的同事,我发现有人喜欢在反馈错误时,只说二个字:报错!说实话,您也太不专业了!您想想人家根据“报错”二个字,就能找到报错的原因吗?还有些人 <a href="https://www.cnblogs.com/fish-li/archive/2013/03/12/2954997.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2013/03/03/2941911.html
优化反射性能的总结(下) - Fish Li
在前二篇博客中,我分别介绍了二种优化反射的方法:1. Delegate:委托。2. CodeDOM:动态代码生成。这是二种截然不同的方法,性能的差距也很大。今天的博客将着重比较它们的优缺点,以及给出它们的使用建议。用Delegate优化反射的缺点在评价委托方案时,我认为有必要细分一下委托方案:1. 强类型委托,例如:Action<TTarget, TValue>2. 弱类型委托,例如:Action<object, object>它们的优点分别是:强类型委托:速度快,已经最接近直接调用的性能,然而它的缺点是 不通用。弱类型委托:比较通用,且经过一些代码封装后,使用方便,但
2013-03-03T13:11:00Z
2013-03-03T13:11:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】在前二篇博客中,我分别介绍了二种优化反射的方法:1. Delegate:委托。2. CodeDOM:动态代码生成。这是二种截然不同的方法,性能的差距也很大。今天的博客将着重比较它们的优缺点,以及给出它们的使用建议。用Delegate优化反射的缺点在评价委托方案时,我认为有必要细分一下委托方案:1. 强类型委托,例如:Action<TTarget, TValue>2. 弱类型委托,例如:Action<object, object>它们的优点分别是:强类型委托:速度快,已经最接近直接调用的性能,然而它的缺点是 不通用。弱类型委托:比较通用,且经过一些代码封装后,使用方便,但 <a href="https://www.cnblogs.com/fish-li/archive/2013/03/03/2941911.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2013/02/24/2924673.html
优化反射性能的总结(中) - Fish Li
问题回顾在上篇博客中,我介绍了优化反射的第一个步骤:用委托调用代替直接反射调用。然而,那只是反射优化过程的开始,因为新的问题出现了:如何保存大量的委托?如果我们将委托保存在字典集合中,会发现这种设计会浪费较多的执行时间,因为这种设计会引发三个新问题:1. 代码的执行路径变长了。2. 字典查找是有成本开销的。3. 字典集合的并发读写需要锁定,会影响并发性。再来回顾一下上次的测试结果吧:虽然通用接口ISetValue将反射性能优化了37倍,但是最终的FastSetValue将这个数字减少到还不到7倍(在CLR4中还不到5倍)。难道您不觉得遗憾吗?再看看直接调用与反射调用的对比,它们的速度相差了上千
2013-02-24T13:03:00Z
2013-02-24T13:03:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】问题回顾在上篇博客中,我介绍了优化反射的第一个步骤:用委托调用代替直接反射调用。然而,那只是反射优化过程的开始,因为新的问题出现了:如何保存大量的委托?如果我们将委托保存在字典集合中,会发现这种设计会浪费较多的执行时间,因为这种设计会引发三个新问题:1. 代码的执行路径变长了。2. 字典查找是有成本开销的。3. 字典集合的并发读写需要锁定,会影响并发性。再来回顾一下上次的测试结果吧:虽然通用接口ISetValue将反射性能优化了37倍,但是最终的FastSetValue将这个数字减少到还不到7倍(在CLR4中还不到5倍)。难道您不觉得遗憾吗?再看看直接调用与反射调用的对比,它们的速度相差了上千 <a href="https://www.cnblogs.com/fish-li/archive/2013/02/24/2924673.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2013/02/18/2916253.html
优化反射性能的总结(上) - Fish Li
反射是一种很重要的技术,然而它与直接调用相比性能要慢很多,因此如何优化反射性能也就成为一个不得不面对的问题。目前最常见的优化反射性能的方法就是采用委托:用委托的方式调用需要反射调用的方法(或者属性、字段)。那么如何得到委托呢? 目前最常见也就是二种方法:Emit, ExpressionTree 。其中ExpressionTree可认为是Emit方法的简化版本,所以Emit是最根本的方法,它采用在运行时动态构造一段IL代码来包装需要反射调用的代码,这段动态生成的代码满足某个委托的签名,因此最后可以采用委托的方式代替反射调用。用Emit方法优化反射如果我们需要设计自己的数据访问层,那么就需要动态创
2013-02-18T13:32:00Z
2013-02-18T13:32:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】反射是一种很重要的技术,然而它与直接调用相比性能要慢很多,因此如何优化反射性能也就成为一个不得不面对的问题。目前最常见的优化反射性能的方法就是采用委托:用委托的方式调用需要反射调用的方法(或者属性、字段)。那么如何得到委托呢? 目前最常见也就是二种方法:Emit, ExpressionTree 。其中ExpressionTree可认为是Emit方法的简化版本,所以Emit是最根本的方法,它采用在运行时动态构造一段IL代码来包装需要反射调用的代码,这段动态生成的代码满足某个委托的签名,因此最后可以采用委托的方式代替反射调用。用Emit方法优化反射如果我们需要设计自己的数据访问层,那么就需要动态创 <a href="https://www.cnblogs.com/fish-li/archive/2013/02/18/2916253.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2013/01/13/2858599.html
各种AJAX方法的使用比较 - Fish Li
AJAX技术经过这么多年的发展,出现了一些框架或类库用于简化开发工作,不同的框架类库的使用方法也各不相同。现在,再回头看看这些技术,看看这些框架类库,我们能感受到技术在不断地发展,AJAX开发越来越容易了。本文收集了在ASP.NET平台上,一些具体代表性的AJAX开发方法,我将用实际的示例代码来演示如何使用它们,让您感受AJAX的进化历程,同时也希望将一些优秀的AJAX开发方法介绍给您。为了方便地介绍这些AJAX开发方法,我将它们划分为四代技术。注意:按代划分AJAX技术纯属我个人的观点,只为了更好了区分它们。此外,一些不借助任何框架类库的原始AJAX开发方法,本文将不讨论它们。第一代技术:生
2013-01-13T12:59:00Z
2013-01-13T12:59:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】AJAX技术经过这么多年的发展,出现了一些框架或类库用于简化开发工作,不同的框架类库的使用方法也各不相同。现在,再回头看看这些技术,看看这些框架类库,我们能感受到技术在不断地发展,AJAX开发越来越容易了。本文收集了在ASP.NET平台上,一些具体代表性的AJAX开发方法,我将用实际的示例代码来演示如何使用它们,让您感受AJAX的进化历程,同时也希望将一些优秀的AJAX开发方法介绍给您。为了方便地介绍这些AJAX开发方法,我将它们划分为四代技术。注意:按代划分AJAX技术纯属我个人的观点,只为了更好了区分它们。此外,一些不借助任何框架类库的原始AJAX开发方法,本文将不讨论它们。第一代技术:生 <a href="https://www.cnblogs.com/fish-li/archive/2013/01/13/2858599.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2013/01/04/2844908.html
选择HttpHandler还是HttpModule? - Fish Li
最近收到几个疑问:HttpHandler和HttpModule之间有什么差别,我到底该选择哪个?之所以有这个疑问,是因为在这二类对象中都可以访问Request, Response对象,都能处理请求。我原以为在博客 用Asp.net写自己的服务框架中做了那么多的演示应该把它们的使用方法说清楚了,然而有些人看了我的那些示例,仍然不知道该如何选择它们,为了实现同一个目标,我既用了HttpHandler,也有用HttpModule。现在看来,我当时设计的那些示例并不是讲清楚HttpHandler和HttpModule之间有什么差别,而是在演示如何利用HttpHandler和HttpModule设计一个
2013-01-04T13:57:00Z
2013-01-04T13:57:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】最近收到几个疑问:HttpHandler和HttpModule之间有什么差别,我到底该选择哪个?之所以有这个疑问,是因为在这二类对象中都可以访问Request, Response对象,都能处理请求。我原以为在博客 用Asp.net写自己的服务框架中做了那么多的演示应该把它们的使用方法说清楚了,然而有些人看了我的那些示例,仍然不知道该如何选择它们,为了实现同一个目标,我既用了HttpHandler,也有用HttpModule。现在看来,我当时设计的那些示例并不是讲清楚HttpHandler和HttpModule之间有什么差别,而是在演示如何利用HttpHandler和HttpModule设计一个 <a href="https://www.cnblogs.com/fish-li/archive/2013/01/04/2844908.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2012/12/23/2830301.html
不修改代码就能优化ASP.NET网站性能的一些方法 - Fish Li
本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不需要修改程序代码的。它们主要分为二个方面:1. 利用ASP.NET自身的扩展性进行优化。2. 优化IIS设置。配置OutputCache用缓存来优化网站性能的方法,估计是无人不知的。ASP.NET提供了HttpRuntime.Cache对象来缓存数据,也提供了OutputCache指令来缓存整个页面输出。虽然OutputCache指令使用起来更方便,也有非常好的效果,不过,它需要我们在那些页面中添加这样一个指令。对于设置过OutputCache的页面来说,浏览器在收到这类页面的响应后,会将页面响应内容缓存起来。只要在指定的缓存时间
2012-12-23T13:27:00Z
2012-12-23T13:27:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不需要修改程序代码的。它们主要分为二个方面:1. 利用ASP.NET自身的扩展性进行优化。2. 优化IIS设置。配置OutputCache用缓存来优化网站性能的方法,估计是无人不知的。ASP.NET提供了HttpRuntime.Cache对象来缓存数据,也提供了OutputCache指令来缓存整个页面输出。虽然OutputCache指令使用起来更方便,也有非常好的效果,不过,它需要我们在那些页面中添加这样一个指令。对于设置过OutputCache的页面来说,浏览器在收到这类页面的响应后,会将页面响应内容缓存起来。只要在指定的缓存时间 <a href="https://www.cnblogs.com/fish-li/archive/2012/12/23/2830301.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2012/11/21/2780086.html
ASP.NET状态管理的总结 - Fish Li
由于HTTP协议的无状态特性,导致在ASP.NET编程中,每个请求都会在服务端从头到执行一次管线过程,对于ASP.NET页面来说,Page对象都会重新创建,所有控件以及内容都会重新生成,因此,如果希望上一次的页面状态能够在后续页面中保留,则必需引入状态管理功能。ASP.NET为了实现状态管理功能,提供了8种方法,可帮助我们在页面之间或者整个用户会话期间保留状态数据。这些方法分为二类:视图状态、控件状态、隐藏域、Cookie 和查询字符串会以不同方式将数据发送到客户端上。而应用程序状态、会话状态和配置文件属性(Profile)则会将数据存储到服务端。虽然每种方法都有不同的优点和缺点,对于小的项目
2012-11-21T00:32:00Z
2012-11-21T00:32:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】由于HTTP协议的无状态特性,导致在ASP.NET编程中,每个请求都会在服务端从头到执行一次管线过程,对于ASP.NET页面来说,Page对象都会重新创建,所有控件以及内容都会重新生成,因此,如果希望上一次的页面状态能够在后续页面中保留,则必需引入状态管理功能。ASP.NET为了实现状态管理功能,提供了8种方法,可帮助我们在页面之间或者整个用户会话期间保留状态数据。这些方法分为二类:视图状态、控件状态、隐藏域、Cookie 和查询字符串会以不同方式将数据发送到客户端上。而应用程序状态、会话状态和配置文件属性(Profile)则会将数据存储到服务端。虽然每种方法都有不同的优点和缺点,对于小的项目 <a href="https://www.cnblogs.com/fish-li/archive/2012/11/21/2780086.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2012/11/05/2754516.html
程序在发布前就应该发现的一些错误 - Fish Li
在软件开发过程中,写出影响性能或者有BUG的代码,都是我们无法回避的现实问题。不过,如果能够在程序发布前(自测或者测试阶段)将这些问题找出来,我想大家都是可接受的。今天就来介绍一种方法,用来发现在网站开发过程中,容易被我们忽略的一些问题,而这些问题其实是容易被发现的。将要介绍的方法需要使用Fiddler这样一款工具,我将演示如何使用Fiddler来发现404错误,以及较大的响应输出问题。我认为这二个问题实在太低级了,所以我设计了这个方法,并写了这篇博客,希望大家能喜欢。我发现,许多人对于这二类问题(404错误和较大的响应输出)都很不在意,好像它们根本不会对一个网站有任何影响似的。难道真是这样吗
2012-11-05T00:54:00Z
2012-11-05T00:54:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】在软件开发过程中,写出影响性能或者有BUG的代码,都是我们无法回避的现实问题。不过,如果能够在程序发布前(自测或者测试阶段)将这些问题找出来,我想大家都是可接受的。今天就来介绍一种方法,用来发现在网站开发过程中,容易被我们忽略的一些问题,而这些问题其实是容易被发现的。将要介绍的方法需要使用Fiddler这样一款工具,我将演示如何使用Fiddler来发现404错误,以及较大的响应输出问题。我认为这二个问题实在太低级了,所以我设计了这个方法,并写了这篇博客,希望大家能喜欢。我发现,许多人对于这二类问题(404错误和较大的响应输出)都很不在意,好像它们根本不会对一个网站有任何影响似的。难道真是这样吗 <a href="https://www.cnblogs.com/fish-li/archive/2012/11/05/2754516.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2012/10/14/2723631.html
解决ASP.NET中的各种乱码问题 - Fish Li
经常发现有人被乱码困扰着,而我感觉比较幸运,很少为此烦恼过。在这篇博客中,我将把我想到的一些与乱码有关的经验总结出来,供大家参考。页面显示乱码问题在一个网站中,有些页面会正常显示,然而,有些页面会显示成乱码。如果发生这种情况,可以检查一下web.config和文件编码。如果web.config是这样配置的:<globalization fileEncoding="utf-8" />而文件的编码不是UTF-8:那么就会有乱码问题。注意:反之是不是会出现乱码的。1. 不设置fileEncoding,此时不会有乱码现象。2. fileEncoding="gb
2012-10-14T15:26:00Z
2012-10-14T15:26:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】经常发现有人被乱码困扰着,而我感觉比较幸运,很少为此烦恼过。在这篇博客中,我将把我想到的一些与乱码有关的经验总结出来,供大家参考。页面显示乱码问题在一个网站中,有些页面会正常显示,然而,有些页面会显示成乱码。如果发生这种情况,可以检查一下web.config和文件编码。如果web.config是这样配置的:<globalization fileEncoding="utf-8" />而文件的编码不是UTF-8:那么就会有乱码问题。注意:反之是不是会出现乱码的。1. 不设置fileEncoding,此时不会有乱码现象。2. fileEncoding="gb <a href="https://www.cnblogs.com/fish-li/archive/2012/10/14/2723631.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2012/10/03/2711036.html
ClownFish 使用说明 - Fish Li
ClownFish 是什么?ClownFish 能做什么?ClownFish 有什么特色?如果您有这些疑问,那么请浏览ClownFish的介绍博客:ClownFish:比手写代码还快的通用数据访问层ClownFish适合我吗?我认为,对于数据库的访问方式目前有以下5种方案:1. 有些人喜欢使用存储过程。2. 有些人不喜欢存储过程也不喜欢把SQL语句放在C#代码中。3. 有些人会在C#中嵌入参数化的SQL语句。4. 有些人就是喜欢在C#代码中拼接SQL语句。5. 还有些人不写SQL语句而在使用ORM工具。当然了,还有些人同时混合使用多种方案。我不知道您属于哪一类,如果是最后一类,那么我只能说:C
2012-10-03T12:14:00Z
2012-10-03T12:14:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】ClownFish 是什么?ClownFish 能做什么?ClownFish 有什么特色?如果您有这些疑问,那么请浏览ClownFish的介绍博客:ClownFish:比手写代码还快的通用数据访问层ClownFish适合我吗?我认为,对于数据库的访问方式目前有以下5种方案:1. 有些人喜欢使用存储过程。2. 有些人不喜欢存储过程也不喜欢把SQL语句放在C#代码中。3. 有些人会在C#中嵌入参数化的SQL语句。4. 有些人就是喜欢在C#代码中拼接SQL语句。5. 还有些人不写SQL语句而在使用ORM工具。当然了,还有些人同时混合使用多种方案。我不知道您属于哪一类,如果是最后一类,那么我只能说:C <a href="https://www.cnblogs.com/fish-li/archive/2012/10/03/2711036.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2012/10/02/2710334.html
哈哈,我评上了 ASP.NET MVP - Fish Li
国庆节这二天一直在为我的ClownFish写《使用说明》。偶乐闲得无聊,打开了我的网易邮箱,发现有一封未读邮件:恭喜您成为 2012 年度 Microsoft MVP !哈哈,总算评上了。上次(7月份)没被评上,当时非常失望。经过周围朋友的劝告,于是鼓足勇气,决定再试一次,最后试一次,而且MVP申请表也写简单了,也不翻译成英语了,也不找博客园推荐,直接发给微软,总之,无所谓了,不抱有希望了。因为我认为:期望越高,失望越大。就像我老婆说的:你写博客本来就不是为了拿MVP,评不上算了。真没想到这次还成功了。今天看到这封邮件,真是意外。当时(7月6日)发完邮件收到确认后,直到10月1日前,一点消息也
2012-10-02T07:45:00Z
2012-10-02T07:45:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】国庆节这二天一直在为我的ClownFish写《使用说明》。偶乐闲得无聊,打开了我的网易邮箱,发现有一封未读邮件:恭喜您成为 2012 年度 Microsoft MVP !哈哈,总算评上了。上次(7月份)没被评上,当时非常失望。经过周围朋友的劝告,于是鼓足勇气,决定再试一次,最后试一次,而且MVP申请表也写简单了,也不翻译成英语了,也不找博客园推荐,直接发给微软,总之,无所谓了,不抱有希望了。因为我认为:期望越高,失望越大。就像我老婆说的:你写博客本来就不是为了拿MVP,评不上算了。真没想到这次还成功了。今天看到这封邮件,真是意外。当时(7月6日)发完邮件收到确认后,直到10月1日前,一点消息也 <a href="https://www.cnblogs.com/fish-li/archive/2012/10/02/2710334.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2012/09/10/CPQuery.html
CPQuery, 解决拼接SQL的新方法 - Fish Li
我一直都不喜欢在访问数据库时采用拼接SQL的方法,原因有以下几点:1. 不安全:有被SQL注入的风险。2. 可能会影响性能:每条SQL语句都需要数据库引擎执行[语句分析]之类的开销。3. 影响代码的可维护性:SQL语句与C#混在一起,想修改SQL就得重新编译程序,而且二种代码混在一起,可读性也不好。所以我通常会选择【参数化SQL】的方法去实现数据库的访问过程,而且会将SQL语句与项目代码(C#)分离开。不过,有些人可能会说:我的业务逻辑很复杂,Where中的过虑条件不可能事先确定,因此不拼接SQL还不行。看到这些缺点,ORM用户可能会认为:使用ORM工具就是终极的解决方案。是的,的确ORM可以
2012-09-10T00:39:00Z
2012-09-10T00:39:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】我一直都不喜欢在访问数据库时采用拼接SQL的方法,原因有以下几点:1. 不安全:有被SQL注入的风险。2. 可能会影响性能:每条SQL语句都需要数据库引擎执行[语句分析]之类的开销。3. 影响代码的可维护性:SQL语句与C#混在一起,想修改SQL就得重新编译程序,而且二种代码混在一起,可读性也不好。所以我通常会选择【参数化SQL】的方法去实现数据库的访问过程,而且会将SQL语句与项目代码(C#)分离开。不过,有些人可能会说:我的业务逻辑很复杂,Where中的过虑条件不可能事先确定,因此不拼接SQL还不行。看到这些缺点,ORM用户可能会认为:使用ORM工具就是终极的解决方案。是的,的确ORM可以 <a href="https://www.cnblogs.com/fish-li/archive/2012/09/10/CPQuery.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2012/08/19/ClownFish-Unleashed.html
揭秘 ClownFish 比手写代码还快的原因 - Fish Li
说明:本文的第一版由于反对人数较多(推荐/反对数量是:23 / 17),我在8月20日删除了博文内容,只留下一段简单的内容。既然分享技术也引来这么多的反对,那我就不分享了。如果希望知道我的优化方法,请回复留下email地址。但是让我万万没有想到的是:到10月17日为止,内容没有了,推荐数量还翻了一倍。为了表示对所有点过【推荐】的朋友表示感谢,我决定重写本文。在此,尤其要感谢那些 在没有博文的情况下仍然愿意点击推荐 的朋友,真心谢谢你们的支持。我的每篇博文后面都会说:我的写作热情也离不开您的肯定支持。,所以,是你们重新给了我重写本文的热情。本文的第一版,说了过多的理论内容。在我阅读一些人的评论后
2012-08-19T13:24:00Z
2012-08-19T13:24:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】说明:本文的第一版由于反对人数较多(推荐/反对数量是:23 / 17),我在8月20日删除了博文内容,只留下一段简单的内容。既然分享技术也引来这么多的反对,那我就不分享了。如果希望知道我的优化方法,请回复留下email地址。但是让我万万没有想到的是:到10月17日为止,内容没有了,推荐数量还翻了一倍。为了表示对所有点过【推荐】的朋友表示感谢,我决定重写本文。在此,尤其要感谢那些 在没有博文的情况下仍然愿意点击推荐 的朋友,真心谢谢你们的支持。我的每篇博文后面都会说:我的写作热情也离不开您的肯定支持。,所以,是你们重新给了我重写本文的热情。本文的第一版,说了过多的理论内容。在我阅读一些人的评论后 <a href="https://www.cnblogs.com/fish-li/archive/2012/08/19/ClownFish-Unleashed.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html
ClownFish:比手写代码还快的通用数据访问层 - Fish Li
最近花了二个月的业余时间重写了我以前的通用数据访问层,由于是重写,所以我给这个项目取了个新名字:ClownFish如果需要了解ClownFish的使用方法,请点击ClownFish 使用说明ClownFish是什么?ClownFish 是我编写的一个通用数据访问层,设计它的目的是为了:1. 方便在 .net 项目中执行数据访问任务。2. 避免直接使用ADO.NET带来的一大堆高度类似的繁琐代码。3. 提供出色的性能满足实际项目需要。ClownFish 具有以下一些技术特色:1. 高性能:比手写代码还快的执行速度。2. 简单:执行查询、将查询结果转成实体列表、获取输出参数。 一个调用完成三个步骤
2012-07-17T00:26:00Z
2012-07-17T00:26:00Z
Fish Li
https://www.cnblogs.com/fish-li/
【摘要】最近花了二个月的业余时间重写了我以前的通用数据访问层,由于是重写,所以我给这个项目取了个新名字:ClownFish如果需要了解ClownFish的使用方法,请点击ClownFish 使用说明ClownFish是什么?ClownFish 是我编写的一个通用数据访问层,设计它的目的是为了:1. 方便在 .net 项目中执行数据访问任务。2. 避免直接使用ADO.NET带来的一大堆高度类似的繁琐代码。3. 提供出色的性能满足实际项目需要。ClownFish 具有以下一些技术特色:1. 高性能:比手写代码还快的执行速度。2. 简单:执行查询、将查询结果转成实体列表、获取输出参数。 一个调用完成三个步骤 <a href="https://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html" target="_blank">阅读全文</a>