日期:2011-11-26  浏览次数:20544 次

最近一段时间在用 C# 和 ASP.NET,在受训和使用中偶尔有一些心得。
我觉得有时候问题比答案本身要重要,所以列了些问题,
这些问题主要是关于基本概念的,或者是初学者一上手就要碰到的。
至少我为其中一些问题困惑过。
关于答案我就并不是都知道了,更要命的是现在自己疑问越来越多,答案出现的越来越慢.....


1. Page class 实现了哪个重要的 interface?   

a: IHttpHandler
   偶以为了解 .net class, interface 特重要的说......


2. foo.aspx 编译后的 class 名字是什么?      

a: foo_aspx
   扩展问题:如何动态地,用程序(programmatically)引用一个 user control?
   有什么要注意的?
   别告诉我 msdn beta 1 里有。你编译一下就知道它在胡说。

3. Shadow-copy dll 存在哪里?                

a:
考虑一下,如果没有一种机制(现在我们管它叫 shadow-copy),
我们能否删除/改变正在被使用的 dll?
比如在 vb6+iis+asp+mts 环境中,多少次需要 restart iis service or reboot...

4. 谈谈 AutoEventWireup                      

a:
   有谁发现自己写的某些事件被执行了两遍?  ;)

5. 关于 Directive 中的 Inherits:一个 aspx 可能 inherits 多个 class 吗?
   多个 page 可能 inherits 一个 code behind 吗?        

a:
   c# 中不能多重继承。
   但多个不同 aspx 肯定能 share 一个 code behind ---- 哪怕 page 里的 server control 不一样。

6. @Assembly 和 csc /r 和 vs.net 项目中 reference 的关系是什么?  
a:
   需要同时使用 ide 和手工编译的人最清楚了。;-(

7. web control 和 html control 在 performance 上有区别吗?        
a:
   文档上总说 beta1 拒绝 performance 测试  ;-)

8. 对 asp.net 的请求是由哪个 isapi extension 处理分发的?         
a:
   xspisapi.dll   在 iis mmc 中改
   如果有自己写的继承 IHttpHandler 的东东,知道这些就有用了。

9. 这个 isapi extension 实际上把请求 forword 到哪个 process?      
a:
   xspwp.exe

10 如果使用外部进程维护 session,这个进程是什么?                 
a:
   aspstate.exe
   在 config.web 里面修改设置,可以把 session 放在其它机器上,甚至 sql 里。
   这样就可以直接支持 web farm 了。
   但 session 变量如果是 object,就会有个 serialize 的过程,很耗资源。
   如何让你的 object 更好地支持 serializable interface 是个比较大的话题,
   实在敲不动的说。

11 如何自己做个 httphandler? 能想出它有什么实际用处吗?          
a:
   实现 IHttpHandler 做出自己的 handler 很简单,但很有用,比如当用户请求一些
   特殊文件时,比如 *.log,你可以在 config.web 中设置定向到你自己的 handler 上,
   让它做处理。


12 谈谈 HttpModule                                               
a:
   问题 11 的延伸

13 如何在 VS.NET 中 debug asp.net 应用?                          
a:
   attach process

14 如果你通过继承 System.Web.UI.Control 写了个 Custom Control,
   如何加上对 client-side script 的支持?                          
a:
   没什么可说的。

15 在 aspx 页面中放上一些 TextBox, ListBox 等等 Web Control,
   但在 code-behind 中并不定义它们,是否可能使用这些 control?     
a:
   能。通过 page.controls, or form.controls, or con