首页 新闻 会员 周边 捐助

最近自己在看asp.net的时候做了一些笔记,感觉太乱了?

0
悬赏园豆:5 [待解决问题]

1、页面属性
要使用PreviousPage属性,可以在页面中使用“PreviousPageType”属性来指定前一个页面的地址,从而来获取页一个页面
2、怎样在代码页面添加javascript代码:
在设计页面:
<asp:Button ID="btnScript" runat="server" Text="test RegisterClientScriptBlock" OnClientClick="AlertHello()" />

在代码页面:
a、使用Page.ClientScript.RegisterClientScriptBlock,把生成的脚本放在顶部:
        string myScript = @"function AlertHello(){ alert('HelloWorld'); }";
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "myScript", myScript, true);
b、使用Page.ClientScript.RegisterStartupScript,把生成的脚本放在底部:
 Page.ClientScript.RegisterStartupScript(this.GetType(), "myScript", myScript, true);

c、使用Page.ClientScript.RegisterClientScriptInclude("jsFile", "javascript.js");//将文件javascript.js添加到文件中
3、按钮的事件属性:OnClientClick事件执行脚本函数,OnClick用于执行服务端事件
  <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="alert();" OnClick="Button1_Click" />

2、关于Skin:
在page页面中使用Theme和StyleSheetTheme的区别,如果一个空间使用theme并且本地设置了样式(例如设置ForeColor属性),那么theme的样式会覆盖Forecolor的样式,如果使用StyleSheetTheme就会保留本地样式


3、各种符号的使用:
a、<%# %> :在界定符之间的所有内容都作为表达式来处理
b、<%$ %>:中间放的是要分析的表达式
表达式构建器(都是检索web.config里边):
 AppSetting:<%$ AppSettings:LabelText %>
 ConnectionString:
 本地资源:Resources:TEST

3、ASP.NET应用程序状态:
a、应用程序状态
b、会话状态
c、高速缓存状态

4、AJAX:
使用之前:是提交整个页面的请求,需要经过页面的很多处理过程
使用之后:使用客户端的脚本引擎来启动请求,接受响应
 

5、将DataView转化为Html语言的方法:
        GridView grid = new GridView();
        grid.ID = "GridView";
        grid.DataSource = table;
        grid.DataBind();

        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        grid.RenderControl(htw);
        htw.Close();

        return sw.ToString();
GridView不能直接绑定数据源,只能绑定到table上

6、会话状态:
a、进程内的会话状态(Session)
b、进程外的会话状态(StateServer):应用程序的代码运行在辅助进程aspnet_wp.exe或者w3wp.exe)中,状态服务运行在一个aspnet_state.exe进程中。所以会话不能通过存储引用,而必须通过二进制串行化
c、SQL支持的会话状态:用aspnet_regsql.exe配置。

7、定制页面错误配置:
    <customErrors mode="On" defaultRedirect="StateError.aspx">
      <error statusCode="404" redirect="StateError.aspx"/>
    </customErrors>
  </system.web>

8、复制web站点的方法:
a、xcopy复制命令:xcopy [source] [destination] 参数命令;
b、从菜单:WebSite》Copy Web Site,通过GUI来操作copy;
c、部署预编译的web应用程序,Build》Publish Web Site


9添加缓存依赖
   //添加文件依赖
   Response.AddFileDependency(MapPath("CacheDependency.xml"));
    //删除文件依赖  Page.ResolveUrl("CacheDependency.xml")把相对路径转化为绝对路径。
       HttpResponse.RemoveOutputCacheItem(Page.ResolveUrl("CacheDependency.xml"));

问题补充:

10、生命周期
IIS 5.0:
IIS运行在INetInfo.exe进程中,asp.net application运行在aspnet_wp.exe进程中。IIS和asp.net application之间的映射通过aspnet_isapi.dll承载;
aspnet_wp.exe加载CLR,创建托管环境,加载两个DllAppManagerAppDomainFactory创建AppDomain、ISAPIRuntime的ProcessRequest方法处理Request;
通过ISAPIRuntime进入ASP.NET Http Runtime Pipeline的范畴,接管Request生成HTML
缺点:
a、IIS和application运行在不同的进程中,但是一个基于进程之间的通信对性能的影响确实不能从根本上解决;
b、一台机器上只能运行一个worker process,但是一旦真个进程崩溃,所有的Application都受影响

IIS 6.0:
http.sys接受IIS接受Request请求,根据IIS的MetaBase找到Application pool(应用队列池),aspnet_isapi.dll承载Application pool的Request,之后和IIS 5.0一样。

备注:aspnet_isapi.dll本身是非托管的,虽然他通过加载CLR创建托管环境

生命周期过程
》浏览器通过网络访问服务器
》IIS接受服务请求
》IIS分析请求,返回静态结果(静态文件);处理不了的请求发送到ASPNET_ISAPI.DLL可扩展程序
》可扩展程序程序把请求交给aspnet_wp.exe或者aspnet_w3wp.exe程序
》aspnet_wp.exe或者aspnet_w3wp.exe调用IHttpRunTime接口的方法处理请求。由IHttpRunTime来处理所有的请求,他的工作:
(1)将报文数据装入HttpWorkerRequest对象对应的属性(便于其他地方使用)
(2)调用HttpApplicationFactory类的静态方法创建HttpApplication对象。(创建之前查看HttpApplication池,有没有空闲HttpApplication,没有才创建)
(3)创建HttpContext上下文,HttpContext主要包含HttpRequest和HttpRespnose两个对象
 HttpRequest包含所有的请求信息,来源于HttpWorkerRequest对象的属性
 HttpResponse包含TestWriter对象,来存储返回结果
(4)需要将HttpContext对象保存到HttpApplication对象中,因为HttpApplication对象要执行IHttpHandler接口对象的ProcessRequest方法需要上下文
》HttpApplication执行ProcessRequest方法(即执行管道),一共有19个事件,第八个事件时创建HttpHandler对象(页面对象),11到12事件之间,执行被创建HttpHandler对象的ProcessRequest方法。

页面生命周期:
页面初始化 Page_Init 加载主题、应用母版页
加载View State LoadViewState 加载页面试图
回发数据处理 LoadPostData
页面加载 Page_Load
回发通知 RaisePostDataChangedEvent
回发事件处理 RaisePostBackEvent
页面预渲染 Page_PreRender
保存viewState SaveViewState
Page渲染 page_Render
Page卸载 page_UnLoad

页面传值方式:
1、QueryString:通过地址栏传参数,可以传递不重要而且简单的参数值
2、Session:值是存储在服务器端的适合大系统,都存储在服务器导致占用服务器大量内存
3、Server.Transfer:可以获取前一个页面的属性值.例如在前页定义public string Name{get;set:},跳转后可以使用PrevPage.Name来获取值
4、Application:针对整个项目而言的,是全局变量,通常在Global.acsx中定义。
5、Cookies:针对于会话状态,数据保存在客户端,当浏览器关闭后数据就丢失。
6、ViewState:本页传值,页面关闭就失效。

11、CLR公共语言运行时:
源代码编译过程:代码源文件》对应编译器》托管模块(中间语言和元数据)
托管模块组成部分:
PE32或者PE32+头:标示文件能在Windows上运行的版本,例如Windows的32位或者64位版本上运行,CPU架构(anycpu、x86等等)
CLR头:
元数据:
IL代码:IL是与CPU无关的机器语言,比大多数CPU机器语言都高级,能访问和操作对象类型,捕获和处理异常

IL代码编译成本地代码的过程:CLR的JIT编译器的职责
例子:
static void main(){
 Console.WriteLine("Hello");
 Console.WriteLine("GoodBye");
}
过程分析:
JITCompiler函数执行过程{
 1、在main函数执行前检查main方法代码引用的所有类型,找到实现Console.WriteLine的程序集的元数据
 2、根据元数据分配内存,元数据的每一个方法都对应一个记录项(Entry),例如包含Console.WriteLine方法的记录项
 3、JITCompiler从元数据中查找调用方法的IL代码并编译成本地代码。本地代码保存到动态内存中
 4、找到刚才被调用方法的记录项的地址,让他直接指向刚才编译好的本地代码的内存地址
 5、JITCompiler跳转到刚才编译好的内存块中的代码,然后执行。执行后返回到Main中代码继续执行。
}
当第二次执行WriteLine方法时,会直接跳转到内存块的代码,完全跳过JITCompiler函数。
其他功能:代码的优化也在JIT时执行、安全性验证(例如参数数量、参数类型)

heavi的主页 heavi | 初学一级 | 园豆:195
提问于:2012-06-30 09:42
< >
分享
所有回答(2)
0

你遇到的问题是什么?

artwl | 园豆:16736 (专家六级) | 2012-06-30 10:50
0

你的这个写的,太乱了。

jerry-Tom | 园豆:4077 (老鸟四级) | 2012-07-02 10:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册