2008年04月14日
ASP.NET 3.5 企业级开发阅读全文>
发表于 @ 2008年04月14日 21:30:00|评论(loading...)|举报|收藏
2007年03月25日
C#精髓【月儿原创】第四讲 GridView 72般绝技阅读全文>
发表于 @ 2007年03月25日 04:36:00|评论(loading...)|举报|收藏
2009年05月17日
using System;
///
/// Summary description for IDCardValid
///
publicclass IDCardValid
{
public IDCardValid()
{
//
// TODO: Add constructor logic here
//
}
///
/// 验证身份证号码
///
/// 身份证号码
/// 验证成功为True,否则为False
publicstaticbool CheckIDCard(string Id)阅读全文>
发表于 @ 2009年05月17日 12:07:00|评论(loading...)|举报|收藏
RowDataBound事件
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
int i;
for (i = 0; i
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#FFFFCC'");
e.Row.Attributes.Add("onm阅读全文>
发表于 @ 2009年05月17日 12:05:00|评论(loading...)|举报|收藏
2009年05月14日
一、连接至Web服务器一个客户端应用(如Web浏览器)打开到Web服务器的HTTP端口的一个套接字(缺省为80)。例如:http://www.myweb.com:8080/index.html在Java中,这将等同于代码:Soceet socket=new Socket("www.myweb.com",8080);InputStream in=socket.getInputStream();OutputStream out=socket.getOutputStream();二、发送HTTP请求通过连接,客户端写一个ASCII文本请求行,后跟0或多个HTTP头标,一个空行和实现请求的任意数据。一个请求由四个部分组成:请求行、请求头标、空行和请求数据1.请求行:请求行由三个标记组成:请求方法、请求URI和HTTP版本,它们用空格分隔。例如:GET /index.html HTTP/1.1HTTP规范定义了8种可能阅读全文>
发表于 @ 2009年05月14日 14:00:00|评论(loading...)|举报|收藏
2009年05月13日
一,获得Mircosoft URLRewriter.dll:
获得Mircosoft URLRewriter.dll可以到http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?mfr=true
下载完毕后,导入工程,我这里没有对该工程做任何修改,保留了原来的重写方式,然后直接在VS2005里面生成.dll文件就可以了。
二,使用该dll文件:
添加引用,搞定。
三,页面方面的设计,这里不在赘述了,我会放一个下载包,有兴趣的朋友下载来看看吧,代码写的比较乱。
四,web.config的配置
这部是非常关键的,也是静态化能否成功的关键。
阅读全文>
发表于 @ 2009年05月13日 19:45:00|评论(loading...)|举报|收藏
阅读全文>
发表于 @ 2009年05月13日 19:44:00|评论(loading...)|举报|收藏
2009年02月02日
[原文作者]:Bill Horst
[原文链接]:Did you know? You can unwind the call stack from exceptions (Bill Horst)
解退一个异常堆栈的能力是Visual Basic.NET 2005的一个新引进的特性。当调式器触发了一个异常,你可以解退这个堆栈以便于使用代码编辑器修复这个异常并继续调式 修改后的代码。这个异常辅助用户界面有一个“Enable Editing”选项,这个选项可以在当前Solution中展开调式器到代码堆栈的最顶端。
当一个异常未被处理的时候,unwind将会自动发生,但是这个特性可以在Options dialog(在Tools下面)被开启或关闭。(见下图)
如果你试图在一个异常被触法后去编辑代码,并在解退栈之前,你可以被允许去使用“解退栈并且编辑代码”,“终止代码调试的session”,或“取消编辑”这三个选阅读全文>
发表于 @ 2009年02月02日 11:33:00|评论(loading...)|举报|收藏
[来源:J.D. Meier's Blog]
微软刚推出了一个ASP.NET 2.0 Internet 安全之参考实现( ASP.NET 2.0 Internet Security Reference Implementation)。这是个配有全部编码和指导性文档的样本应用,其宗旨是示范在实际应用中如何应用“模式和实践之安全向导”中的最佳实践。这个应用是从Pet Shop 4发展而来,使之适用于Internet。该应用使用了表单认证,用户和角色数据是储存在SQL数据库里的。
该应用可以在其官方网站上下载:
ASP_NET 2_0 Internet Security Reference Implementation: Home
http://www.gotdotnet.com/codegallery/codegallery.aspx?id=48f35de8-cd92-4ac6-9144-12d5a13f22ff [找不到链接]
下载的内容包括三部分
1。VS 2005方案和编码
2。Inter阅读全文>
发表于 @ 2009年02月02日 11:27:00|评论(loading...)|举报|收藏
换皮肤的方式有很多种,最简单的通常就是切换页面CSS,而CSS通常写在外部CSS文件里。那么切换css其实就是更换html里的link href路径。我在网上搜索了下。一般有两种方式:
1,在页面放一个holder控件。然后用编程方式把当前用户的风格css link写入页面。
2,通过反射机制,逐个控件设置css样式。
上面两种方式都挺麻烦的,
第一种需要在每个页面上放一个holder控件。类似的做法还有把link标签加runat=server的做法。页面多了,都比较麻烦。
第二种不用考虑了。性能编程效率上问题多多。
记得以前在学习DNN的时候,在他里面发现了一种修改form里默认的action地址的方式,直接参考下。还不错:
直接重写Render事件
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
StringWriter sw阅读全文>
发表于 @ 2009年02月02日 11:23:00|评论(loading...)|举报|收藏
在以前的ASP时候,当请求一个*.asp页面文件的时候,这个HTTP请求首先会被一个名为inetinfo.exe进程所截获,这个进程实际上就是www服务。截获之后它会将这个请求转交给asp.dll进程,这个进程就会解释这个asp页面,然后将解释后的数据流返回给客户端浏览器。其实ASP.DLL是一个依附在IIS的ISAPI文件,它负责了对诸如ASP文件,ASA等文件的解释执行,
-------------------------------------
ASP.NET的HTTP请求处理方法
当客户端向web服务器请求一个*.aspx的页面文件时,同asp类似,这个http请求也会被inetinfo.exe进程截获(www服务),它判断文件后缀之后,把这个请求转交给ASPNET_ISAPI.DLL而ASPNET_ISAPI.DLL则会通过一个Http PipeLine的管道,将这个http请求发送给ASPNET_WP.EXE进程,当这个HTTP请求进入ASPNET_WP.EXE进程之后,asp.net framework就会通过Http阅读全文>
发表于 @ 2009年02月02日 11:00:00|评论(loading...)|举报|收藏
2009年02月01日
转自 http://blog.csdn.net/phphot/archive/2008/08/31/2857049.aspx
一项目计划:
1.项目计划并不是一边将自己所熟悉的工作内容留给自己一边不停的说这个工作量太大,让MM来协助,你要这样的话我建议你当老总找个秘书。
2.开会:
开会的目的是解决问题,不是休息,不是一个会可以开它半天,要讲究效率;开会时在讨论大家所关心的问题,而不是几个组员的问题,如果几个人有问题可以会后来解决,而
不是让大家等你们,直到你们解决完问题,才让大家散会。
二.项目管理:
1.负起责任:
让你管项目,你就得负起这个责任,不是让你的其他组员写代码而你在一边喝茶,老总问你怎么样了你只说差不多,可以了,也不是等到项目结束时你还没有将其他组员写的代
码合起来,而让他们陪着你加班。也不是你在老板面前一直说好了,而你所负责的代码直到两个项目完成时还未修改完,等到项目实施差不多时客户反馈的问题还是阅读全文>
发表于 @ 2009年02月01日 11:14:00|评论(loading...)|举报|收藏
2009年01月05日
新的一年,你的老板或客户,是否曾和你抱怨公司的网站性能愈来愈差?网站大家都会写,自从有了 Visual Studio 之后,连你家楼下的正妹小喵和隔壁的王大婶都会写 ASP.NET。但同样的一个画面,背后的性能却可能是天差地远,更惶论多人同时上线的企业网站,而程序员的身价也因此有所差别。本帖提供一些改善网站性能的点子,从硬件、软件、程序技巧的层面都有,也欢迎大家分享自己的经验或秘技。
(1) 重新调整或重新设计 DB schema、索引 (index)
一个在线系统的性能不佳,主要原因都是来自于数据库规划及 SQL 语句层面,至于 .NET 程序撰写不良都还在其次。
先将数据库适度地做正规化,如:一个 Table 中,避免把常用的字段、很少用的字段,都塞在同一个表中,而影响数据扫描的速度。
应该将很少用的字段,另切割出来成为另一个表。阅读全文>
发表于 @ 2009年01月05日 14:07:00|评论(loading...)|举报|收藏
2008年12月19日
本人作为一位web工程师,着眼最多之处莫过于 性能与架构,本次幸得参与sd2.0大会,得以与同行广泛交流,于此二方面,有些心得,不敢独享,与众博友分享,本文是这次参会与众同撩交流的心得,有兴趣者可以查看视频 架构设计的几个心得: 一,不要过设计:never over design这是一个常常被提及的话题,但是只要想想你的架构里有多少功能是根本没有用到,或者最后废弃的,就能明白其重要性了,初涉架构设计,往往倾向于设计大而化一的架构,希望设计出具有无比扩展性,能适应一切需求的增加架构,web开发领域是个非常动态的过程,我们很难预测下个星期的变化,而又需要对变化做出最快最有效的响应。。 ebay的工程师说过,他们的架构设计从来都不能满足系统的增长,所以他们的系统永远都在推翻重做。请注意,不是ebay架构师的能力有问题,他们设计的架构总是建立旧版本的瓶颈上,希望通过新的架构带来突破,然而新架构带来的突破总是在很短的时间内就被新增需求淹没,于是他们不得不又使用新的架构web开发,是个非常敏捷的过程,变阅读全文>
发表于 @ 2008年12月19日 14:41:00|评论(loading...)|举报|收藏
2008年12月15日
得到函数名:
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
this.Text = st.GetFrame(0).ToString();
得到代码行,源代码文件名:
StackTrace st = new StackTrace(new StackFrame(true));
Console.WriteLine(" Stack trace for current level: {0}", st.ToString());
StackFrame sf = st.GetFrame(0);
Console.WriteLine(" File: {0}", sf.GetFileName());
Console.WriteLine(" Method: {0}", sf.GetMethod().Name);
Console.WriteLine(" Line Number: {阅读全文>
发表于 @ 2008年12月15日 16:12:00|评论(loading...)|举报|收藏
特性(attribute)是被指定给某一声明的一则附加的声明性信息。
在C#中,有一个小的预定义特性集合。在学习如何建立我们自己的定制特性(custom attributes)之前,我们先来看看在我们的代码中如何使用预定义特性。
using System;
public class AnyClass
{
[Obsolete("Don't use Old method, use New method", true)]
static void Old( ) { }
static void New( ) { }
public static void Main( )
{
Old( );
}
}
我们先来看一下上面这个例子,在这个例子中我们使用了Obsolete特性,它阅读全文>
发表于 @ 2008年12月15日 16:10:00|评论(loading...)|举报|收藏
2008年12月11日
作者: 李建忠
接到一位前不久C#培训学员的来信,这位学员虽然以前功底欠缺,但学习劲头很足,在培训中成长很快。即便基本吃透《.NET框架(修订版)》还嫌不够过瘾,一心要成为高手中的高手。来信的目的是希望我来指点进阶方向。
说实话,我一般不想在这些有关个人发展的大是大非的问题上给人指导,因为太多亲身或眼见的经历告诉我人生实在是很难捉摸,善良、智慧、勤奋这些我们珍视的品格常常会碰到可怕的现实。我感觉我鼓励一个人的时候,我只关注到了“程序正义”,并没有多大的信心向他保证“结果正义”。人生不像软件,可以在好的设计下有一个好的产出。
但我又不想让后学失望,也就冒昧地写下了下面一点个人浅陋的心得,摘录一段,接受各位朋友的检阅:
……
不谈具体领域(比如搜索,视频,网络等),单就编程语言这个垂直方向,我大体上对它有一个如下的层次划分。
1. 基本运用C#语法,在各种工具和示例代码的支持下,完成一些基本程序任务
2. 熟练掌握面向对象与组件构造,知其然亦知其所以然,完成一般小规模信息管理类软件项目开发任务
3.阅读全文>
发表于 @ 2008年12月11日 17:17:00|评论(loading...)|举报|收藏
2008年11月20日
周 婷 (zhouting@cn.ibm.com), 软件工程师, IBM 中国软件开发技术实验室
2007 年 8 月 31 日很多应用譬如监控、即时通信、即时报价系统都需要将后台发生的变化实时传送到客户端而无须客户端不停地刷新、发送请求。本文首先介绍、比较了常用的“服务器推”方案,着重介绍了 Comet - 使用 HTTP 长连接、无须浏览器安装插件的两种“服务器推”方案:基于 AJAX 的长轮询方式;基于 iframe 及 htmlfile 的流方式。最后分析了开发 Comet 应用需要注意的一些问题,以及如何借助开源的 Comet 框架-pushlet 构建自己的“服务器推”应用。
“服务器推”技术的应用
传统模式的 Web 系统以客户端发出请求、服务器端响应的方式工作。这种方式并不能满足很多现实应用的需求,譬如:监控系统:后台硬件热插拔、LED、温度、电压发生变化;
即时通信系统:其它用户登录、发送信息;
即时报价系统:后台数据库内容发生变化;
这些应用都需要服务器能实时地将更新的信息传送阅读全文>
发表于 @ 2008年11月20日 17:44:00|评论(loading...)|举报|收藏
Http环境本身是一种无连接状态的架构,在这种架构下服务器只能是被动的接受客户端的请求,返回结果,而无法主动的给客户端发送数据。而在很多需要实时数据交互(比如Web IM)的场景中,我们却希望能及时得到服务器给我们返回的数据。此时,一种最为普遍的做法是:在客户端用定时器,定时去请求服务器的服务,来得到最新数据。而这样一来,很多时候却是在做无用功,频繁的请求也会无端的增加服务器和客户端在请求Web服务上的消耗。那么是否有一种更好的办法,既可以及时得到服务器的返回,同时又可以减少做无用功,以及频繁请求带来的性能问题呢?
记得前不久,在园子里有这样的一篇文章,介绍了几种WEB环境定时刷新数据的机制。其中就有提到google gmail的一种比较巧妙的做法,现在记不得当时是怎么理解这种做法了,只记得有“保持长连接”的基本做法。(当然现在也找不到这篇文章了,希望了解的朋友能提醒一下)。今天由于架构方案的需要,再来仔细思考连接保持方案,以及参考gmail的请求行为,总结了一下,应该是这样的:客户端一直保持一个与服务器的连接,这个连接一直保持着对服务器的请求动作,直到服务器发现阅读全文>
发表于 @ 2008年11月20日 17:43:00|评论(loading...)|举报|收藏
作者:http://www.cnblogs.com/cathsfz/
Ajax的长连接,或者有些人所说的Comet,就是指以XMLHttpRequest的方式连接服务器,连接后服务器并非即时写入相应并返回。服务器会保持连接并等待一个需要通知客户端的事件,该事件发生后马上将数据写入响应,这时候客户端就以相当“实时”的方式接收到事件通知。具体的通信模型,请参考这篇文章:《Comet:基于 HTTP 长连接的“服务器推”技术》,里面已经说得非常详细了,我就不再复述了。
我们接着开始讨论如何使用.NET实现这个模型。首先我们能想到的是,我们需要一个Web Service,可以是ASP.NET Web Service,也可以是WCF Web Service,ASP.NET AJAX Library两者都支持。在这里,为了简单起见,就选择大家更熟悉的ASP.NET Web Service举例。然后,我们写下以下两个函数签名:
public void Send(Message message);
public Message Wait阅读全文>
发表于 @ 2008年11月20日 17:41:00|评论(loading...)|举报|收藏
服务器推送(Server Push)
推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息。服务器发送一批数据,浏览器显示这些数据,同时保证与服务器的连接。当服务器需要再次发送一批数据时,浏览器显示数据并保持连接。以后,服务器仍然可以发送批量数据,浏览器继续显示数据,依次类推。
客户端拉曳(Client Pull)
在客户端拖曳技术中,服务器发送一批数据,在HTTP响应或文档头标记中插入指令,让浏览器“在5秒内再次装入这些数据”或“10秒内前往某URL装入数据”。当指定的时间达到时,客户端就按照服务器的指示去做,或者刷新当前数据,或者调入新的数据。
其实push 和 pull 这两种技术手段非常不同,但目的几乎一致,都是为了给最终用户方便的提供最新信息。
在服务器推送技术中,HTTP 连接一直保持着,直到服务器知道自己已结束发送数据并发送一个结束信号,或者客户端中断连接。而在客户端拖曳技术中,并不保持HTTP阅读全文>
发表于 @ 2008年11月20日 17:15:00|评论(loading...)|举报|收藏
JSON 入门指南
级别: 初级
廖 雪峰, 撰稿人
2008 年 8 月 22 日JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。本文将快速讲解 JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行 JSON 格式数据的处理。
尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有优势,许多 AJAX 应用甚至直接返回 HTML 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低阅读全文>
发表于 @ 2008年11月20日 17:06:00|评论(loading...)|举报|收藏
Web Client Software Factory系列(3):View-Presenter模式 作者: TerryLee
.NET设计模式(18):迭代器模式(Iterator Pattern) 作者: TerryLee
.NET设计模式(19):观察者模式(Observer Pattern) 作者: TerryLee
.NET设计模式(2):单件模式(Singleton Pattern) 作者: TerryLee
.NET设计模式(3):抽象工厂模式(Abstract Factory) 作者: TerryLee
.NET设计模式(4):建造者模式(Builder Pattern) 作者: TerryLee
.NET设计模式(5):工厂方法模式(Factory Method) 作者: TerryLee
.NET设计模式(6):原型模式(Prototype Pattern) 作者: TerryLee
.NET设计模式(7):创建型模式专题总结(Creational Pattern) 作者: TerryLee
.NET设计模式(8):适配器模式(Ad阅读全文>
发表于 @ 2008年11月20日 16:26:00|评论(loading...)|举报|收藏
一、抽象类:
抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。
二、接口:
接口是引用类型的,类似于类,和抽象类的相似之处有三点:
1、不能实例化;
2、包含未实现的方法声明;
3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);
另外,接口有如下特性:
接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。
阅读全文>
发表于 @ 2008年11月20日 15:52:00|评论(loading...)|举报|收藏
2008年11月13日
原作者charlee、原始链接http://tech.idv2.com/2006/08/30/xss-faq/以及本声明。该文章简单地介绍了XSS的基础知识及其危害和预防方法。Web开发人员的必读。译自 http://www.cgisecurity.com/articles/xss-faq.shtml。简介什么是跨站脚本攻击?XSS和CSS是什么意思?跨站脚本攻击有什么危害?能否给出几个跨站脚本攻击的例子?能否解释一下XSS cookie盗窃是什么意思?第一步: 锁定目标第二步: 测试第三步: 执行XSS第四步: 处理收集到的信息作为网站管理者应当如何防范?作为用户应当如何防范?XSS漏洞有多常见?加密能否防止XSS攻击?XSS漏洞能否在服务器上执行命令?如果我不修改CSS/XSS漏洞会怎样?介绍一些更深入讲解XSS的地方。简介现在的网站包含大量的动态内容以提高用户体验,比过去要复杂得多。所谓动态内容,就是根据用户环境和需要,Web应用程序能够输出相应的内容。动态站点会受到一种名为“跨站脚本攻击”(Cross Site Scriptin阅读全文>
发表于 @ 2008年11月13日 16:14:00|评论(loading...)|举报|收藏