ASP.NET入门教程(经典)

中国ASP.NET开发网整理,转载请注明出处。

1 ASP.NET简介

1.1 什么是ASP.net

ASP.net 是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。ASP.net提供许多比现在的Web开发模式强大的的优势。

 执行效率的大幅提高

ASP.net是把基于通用语言的程序在服务器上运行。不像以前的ASP即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。

 世界级的工具支持

ASP.net构架是可以用Microsoft®公司最新的产品 Visual Studio.net开发环境进行开发,WYSIWYG(What You See Is What You Get所见即为所得)的编辑。这些仅是ASP.net强大化软件支持的一小部分。

 强大性和适应性

因为ASP.net是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上(笔者到现在为止只知道它只能用在Windows 2000 Server上)。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.net的Web应用中。ASP.net同时也是language-independent语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C#(C++和Java的结合体),VB,Jscript。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完整的移植向ASP.net。

简单性和易学性

ASP.net是运行一些很平常的任务如表单的提交客户端的身份验证、分布系统和网站配置变得非常简单。例如ASP.net页面构架允许你建立你自己的用户分界面,使其不同于常见的VB-Like界面。另外,通用语言简化开发使把代码结合成软件简单的就像装配电脑。

 高效可管理性

ASP.net使用一种字符基础的,分级的配置系统,使你服务器环境和应用程序的设置更加简单。因为配置信息都保存在简单文本中,新的设置有可能都不需要启动本地的管理员工具就可以实现。这种被称为"Zero Local Administration"的哲学观念使Asp.net的基于应用的开发更加具体,和快捷。一个ASP.net的应用程序在一台服务器系统的安装只需要简单的拷贝一些必须得文件,不需要系统的重新启动,一切就是这么简单。

多处理器环境的可靠性

ASP.net已经被刻意设计成为一种可以用于多处理器的开发工具,它在多处理器的环境下用特殊的无缝连接技术,将很大的提高运行速度。即使你现在的ASP.net应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改变都能提高他们的效能,但现在的ASP确做不到这一点。

自定义性,和可扩展性

ASP.net设计时考虑了让网站开发人员可以在自己的代码中自己定义"plug-in"的模块。这与原来的包含关系不同,ASP.net可以加入自己定义的如何组件。网站程序的开发从来没有这么简单过。

安全性

基于Windows认证技术和每应用程序配置,你可以确性你的原程序时绝对安全的。(但是Asp的经验告诉我们,不能这么自信,M$老是会出Bug的)

1.2 本篇教程的主要内容

 ASP.net 的语法

ASP.net 的语法有可能对老的ASP程序员来说很熟悉,但也有一些是全新的东西,QuickStart教程将在细节上全部谈到它们。

ASP.net 的结构和特征

介绍ASP.net的所有特性,是ASP开发者可以编写交互性的世界级的应用软件,用比以前少的多时间和精力。

最佳话的练习

引用了一些练习题和如何回避在程序开发中潜在地容易犯的错误的方法,是开发更加顺利。

为那些人编写的

如果你从来没有开发过网站程序,那么这不适合你,你应该至少掌握一些HTML语言和简单的Web开发术语。你不需要先前的ASP开发经验(当然有经验更好),但是你必须了解交互式Web程序开发的概念,包含窗体,脚本,和数据接口的概念。

2 ASP.NET控件

2.1 ASP.net 入门

通常谈一个学科,我们老是说,它入门很简单的嘛,ASP.net也是。ASP.net提出一个概念,就是认为WEB页面,也是一个窗体,所以,学习过面向对象编程的VB VC BC Dephi的朋友,学起来就简单多了。

一个ASP.net页面的后缀名是".aspx",所以,IIS在你安装完ASP.net时,也会把Default.aspx作为你的默认首页,网管朋友一定要注意了。

ASP.net 是后天编译运行的,只是在第一次运行时编译,所以,以后的运行速度比ASP执行快。

2.2 写自己第一个ASP.net的程序

激动吗?很快就开始写第一个程序了,一般学任何语言都要Hello World!一下吧,那我们也来。
在这之前写要说一下,ASP.net的程序可以用任何东西写,甚至是Windows的记事本。

3 输入验证控件

3.1 ASP.net解决了ASP的难题:验证表单填写的正确性

如今的商业网站,或者个人网站,多少都有客户调查啊,用户注册之类的东西,必然会用到表单,这些表单的填写正确与否,明显是由手写代码的方式来控制的。我承认编写代码,是一项有趣的工作,不过每次验证表单都来手写代码,我们希望提高我们的工作效率,并不是把我们很有限的时间花在表单的验证工作上。
基于另外的一些原因,Web应用程序很不好验证用户的输入,HTML 3.2 规范可以让你控制用户的反馈,但恶意的或者技术高超的用户可以绕过,因此即使有了浏览器端的手写代码,服务器端同样也需要验证,才能保证安全。

下面是微软的工作人员,给出的商业网站用手写代码控制表单验证的弊病。

1. 尽管错误信息或图标经常与输入元素相邻,但是它们几乎总是位于表的不同单元格中。
2. 页面中经常会有一个区域来汇总所有错误。
3. 许多站点包含客户端脚本,以便提供更快捷的反馈,同时防止白白地在与服务器之间往返。
4. 许多包含客户端脚本的站点在出现错误时会显示信息框。
5. 不仅会验证文本输入,还会验证下拉列表和单选按钮。
6. 如果某个字段为空,站点通常会显示与该条目无效时不同的信息或图标。
7. 许多有效性检查可以很好地代替常用的表达式。
8. 验证通常是基于两个输入之间的比较结果。
9. 以上的验证任务是一些常见的操作,例如检查姓名或邮政编码。大多数站点似乎仍在重复进行这些工作。
10. 因为站点之间的差别通常太大,无法获得一种完美的解决方案来处理每个站点的所有验证任务。

如果你想向你的同事证实你有一种很"酷"的方法,可以禁止在姓名字段里面输入空值,记得选择ASP.net,并且看下面的教程。

3.2 ASP.net进行表单验证的过程

1. aspx文件被编译,运行
2. 用户输入数据
3. 触发Page_Load事件
4. 更改Web控件属性,提示哪里没有输入
5. 将页面用Html重新输出给用户
6. 再次提醒用户输入

3.3 Page_Load 过程

Page 对象包含一些与服务器端验证有关的重要属性和方法。下表列出了Page_Load属性的所有Collect和methed。 

Page_Load方法名
说明
IsValid
(最经常使用)
这是最有用的属性。该属性可以检查整个表单是否有效。通常在更新数据库之前进行该检查。只有 Validators 集中的所有对象全部有效,该属性才为真,并且不将该值存入缓存 。
Validators
该页所有验证对象的集合。这是实现 IValidator 界面的对象的集合。
Validate
在验证时调用的一种方法。在 Page 对象上默认的执行方式是转至每个验证器,并要求各验证器自行评估。

3.4 用来验证表单的验证器(Web控件)

验证控件
说明
RequiredFieldValidator
检查用户是否输入或选择了任何内容
RegularExpressionVali-dator
根据规则表达式检查用户输入。该过程允许进行许多种类的检查,可以用于邮政编码和电话号码等的检查。
CompareValidator
将输入控件与一个固定值或另一个输入控件进行比较。例如,它可以用在口令验证字段中。也可以用来比较输入的日期和数字。
RangeValidator
与 CompareValidator 非常相似, 只是它用来检查输入是否在两个值或其它输入控件的值之间。
CustomValidator
允许用户编写自己的代码以加入到验证框架中。

4 数据绑定 DataBind

这一讲是ASP.net系列讲座中最重要的一讲,包括服务器控件,数据库操作等所有涉及操作数据的控件都会用到 DataBind,也就是说DataBind这一讲,已经开始讲ASP.net核心的问题了。其实DataBind的概念已经提出很长时间了,在ASP中也有应用,只是大家不是很注意而已。 但在ASP.net中,已经把它提升到了一个核心的高度。

4.1 简单介绍 DataBind

DataBind包括三大方法,Repeater,DataList和DataGrid,这些控件都位于 System.Web.UI.WebControls 命名空间中,从 WebControl 基类中直接或间接派生出来的。这些方法都是通过HTML来显示数据的内容。

4.2 建立DataBind

所有的DataBind都应该用DataBind() 函数来建立(注意如果你用的是C#,请注意大小写)数据绑定,是整个页面PAGE和所有控件的一个方法,也就是说,他可以被所有的控件使用,你建立数据绑定的时候,DataBind可以作为控件的一个子项,比如DataList1.DataBind(),再比如 Page.DataBind(),会绑定整个页面。DataBind 常在页面载入时就被绑定。下面这个例子就是这个情况。

VB

Protected   Sub  Page_Load(Src  As   Object , E  As  EventArgs)
DataBind()
End Sub

C#

protected   void  Page_Load( object  sender, EventArgs e)
{
DataBind();
}

4.3 开始使用简单的数据绑定

看这个例子:

VB

Sub  SubmitBtn_Click(sender  As   Object , e  As  EventArgs)
Page.DataBind
End Sub

C#

protected   void  Button1_Click( object  sender, EventArgs e)
{
Page.DataBind();
}

.ASPX文件内容:

< B > 帮韦小宝选择一个老婆 </ B >
< form  runat =server >
 
< asp:DropDownList  id ="StateList"  runat ="server" >
< asp:ListItem > 阿珂 </ asp:ListItem >
< asp:ListItem > 曾柔 </ asp:ListItem >
< asp:ListItem > 建宁 </ asp:ListItem >
< asp:ListItem > 沐公主 </ asp:ListItem >
< asp:ListItem > 双儿 </ asp:ListItem >
< asp:ListItem > 教主夫人 </ asp:ListItem >
 
</ asp:DropDownList >
 
< asp:button  Text ="Submit"  OnClick ="SubmitBtn_Click"  runat =server />
 
< p >
 您帮韦小宝选择的老婆是 :
< asp:label  text ='<%#  StateList.SelectedItem.Text % > ' runat=server/>
</ form >
我们看到,那个选择老婆的地方没有使用什么控件,但是他却能正确的显示我们的选择结果,这个是就捆绑的结果,注意
<% # StateList.SelectedItem.Text  %> 这句话,正是它让我们取得了捆绑的数据。更多的地方,我们会经常看到这样的例子,好像程序里面什么都没有,但数据已经绑定在上面了。

5 数据库的操作

自若干年前推出开放式数据库连接 (ODBC) 应用程序编程接口 (API) 以来,出现了各种各样的数据库访问技术,而 ADO.NET 是其中最新的一种。在这过程中,发生了许多有趣的事。例如,COM 闯入数据库领域,开始培植 OLE DB 的殖民进程。 然后,大致相当于 OLE DB 自动化版本的 ActiveX? Data Objects (ADO) 被选来统治 Windows? 数据库开发者的 Visual Basic? 和 ASP 社区。

通过 .NET,Microsoft 正在提供通用框架(即 Framework Class Library),其中将包括所有现有的 Windows API 甚至更多的内容。特别值得一提的是,它包括大量常用的库,而这些库现在需要通过各个 COM 对象分别获得。在这些库中,您会发现 XML 和 ADO 对象模型,它们被集成到了叫做 ADO.NET 的类子树中。
ADO.NET 事实上成为构建数据感知 .NET 应用程序的基础。和 ADO 不同的是,ADO.NET 遵循更通用的原则,不那么专门面向数据库。ADO.NET 集合了所有允许数据处理的类。这些类表示具有典型数据库功能(如索引、排序和视图)的数据容器对象。尽管 ADO.NET 是 .NET 数据库应用程序的权威解决方案,但从总体设计上来看,它不象 ADO 模型那样以数据库为中心,这是 ADO.NET 的一大特点。

ADO.NET 与 ADO 有很大差异。ADO.NET 是新的数据访问编程模型,需要开发人员的全面理解、投入和新思维。然而,一旦开始掌握 ADO.NET,您将意识到:原有的 ADO 技巧非常有助于您以不同、却更巧妙和可靠的方式来创建有效的应用程序和解决各种老问题。
(以上译自 Microsoft .NET部一位官员的讲话)

5.1 目前的ADO.net

目前 ADO.NET 提供了两种托管提供程序:一种用于 SQL Server 7.0 或更高版本,另一种用于其他所有您可能已经安装的 OLE DB 提供程序。在这两种情况下您分别使用不同的类,但遵循相似的命名规则。除前缀外,名称都是相同的。前一种情况前缀为 SQL,后一种情况则是 ADO。

VB

Imports  System.Data.DAO
Imports  System.Data.Sql

C#

using  System.Data.DAO;
using  System.Data.Sql; 

您应该使用 SQL 类访问 SQL Server 表,因为它们直接进入数据库服务器的内部 API,跳过了由 OLE DB 提供程序表示的中间层。ADO 类是 OLE DB 提供程序上的 .NET 接口,它们使用 COM Interop 桥进行工作。

5.2 连接一个数据库

VB

Dim  myConnection  As   New SQLConnection( " server=localhost;uid=sa;pwd=;database=pubs " )
Dim  myCommand  As   New SQLDataSetCommand( " select * from Authors " , myConnection)

C#

SqlConnection myConnection  =   new  SqlConnection ( " server=localhost;uid=sa;pwd=;database=pubs " );
SqlCommand myCommand 
=   new  SqlCommand ( " select * from Authors " , myConnection);

这里我们需要讲述一下Connection的方法和属性了。

ConnectionTimeout
超时
DataBase
缺省数据库
DataSource
DNS
UserID
用户名,原来叫UID
Password
密码
State
取得目前连接的状态
Open()
打开
Close()
关闭

6 几个重要文件

使用ASP的同仁们一定经常使用这些东西,因为不管什么产品的开发都离不开与用户的互动,而在ASP中,他们三个,正是互动的桥梁。
ASP.net中,他们也受到了足够的重视,但改变不是很大。

6.1 Application

Application的生命周期

Application的生命周期,并不是是从IIS5开始启动的那一刻开始,而是从客户对服务器发出第一个Request的那个时候开始的。从那时开始一个名叫HTTPApplication的Pool开始建立,这也是Application生命周期(lifetime)的开始。此时Application_OnStart的事件也发生了。直到Application_OnEnd的事件发生,才是Application生命周期的结束。

Application写的网站计数器

VB

Application.Lock()
Application(
" counter " =   CType (Application( " counter " +   1 , Int32)
Application.UnLock() 

C#

Application.Lock();
Application(
" counter " =  Convert.ToInt32(Application( " counter " ))  +   1 ;
Application.UnLock();

与ASP中还是一样的。

Application与ASP中的不同的地方

Application与ASP不同的地方在于新多了两个事件Application_OnRequest Start()和Application_OnRequestEnd() 这两个事件,在用户开始浏览一个aspx文件,和aspx文件运行结束时触发,也就是说,这两个事件,不是针对整个服务器来说的,而是对于单个程序来说。

6.2 Session

在ASP中,我们都知道,如果用户把浏览器上面的Cookies关掉,那么Session就不可能被传递了,ASP.net针对这个问题,提出Session的传递应该脱离Cookies。我们修改一下config.web,还记得这个文件吗?ASP.net的无安装化程序移植的精髓,都在这样的一个文件中。

修改如下地方:
<sessionstate cookieless="false" />

改为True就可以了

其他地方 Session和ASP没有什么区别。

7 如何存取SQL Server数据库图片

SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型。下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。在这篇文章中我们要看到如何在SQL Server中存储和读取图片。

1、建立一个表:

在SQL SERVER中建立这样结构的一个表:

列名 类型 目的
ID Integer 主键ID
IMGTITLE Varchar(50) 图片的标题
IMGTYPE Varchar(50) 图片类型. ASP.net要以辨认的类型
IMGDATA Image 用于存储二进制数据

2、存储图片到SQL SERVER数据库中

为了能存储到表中,你首先要上传它们到你的Web 服务器上,你可以开发一个web form,它用来将客户端中TextBox web control中的图片入到你的WEB服务器上来。将你的 encType 属性设置为:myltipart/formdata.

Stream imgdatastream  =  File1.PostedFile.InputStream;
int  imgdatalen  =  File1.PostedFile.ContentLength;
string  imgtype  =  File1.PostedFile.ContentType;
string  imgtitle  =  TextBox1.Text;
byte [] imgdata  =   new   byte [imgdatalen];
int  n  =  imgdatastream.Read(imgdata, 0 ,imgdatalen);
string  connstr = ((NameValueCollection)Context.GetConfig( " appSettings " ))[ " connstr " ];
SqlConnection connection 
=   new  SqlConnection(connstr);
SqlCommand command 
=   new  SqlCommand
 (
" INSERT INTO ImageStore(imgtitle,imgtype,imgdata)
 VALUES ( @imgtitle, @imgtype,@imgdata ) " , connection );
SqlParameter paramTitle  =   new  SqlParameter
 (
" @imgtitle " , SqlDbType.VarChar, 50  );
paramTitle.Value 
=  imgtitle;
command.Parameters.Add( paramTitle);
SqlParameter paramData 
=   new  SqlParameter(  " @imgdata " , SqlDbType.Image );
paramData.Value 
=  imgdata;
command.Parameters.Add( paramData );
SqlParameter paramType 
=   new  SqlParameter(  " @imgtype " , SqlDbType.VarChar, 50  );
paramType.Value 
=  imgtype;
command.Parameters.Add( paramType );
 
connection.Open();
int  numRowsAffected  =  command.ExecuteNonQuery();
connection.Close();

3、从数据库中恢复读取

现在让我们来从SQL Server中读取我们放入的数据吧!我们将要输出图片到你的浏览器上,你也可以将它存放到你要的位置。

private   void  Page_Load( object  sender, System.EventArgs e)
{
 
string  imgid  = Request.QueryString[ " imgid " ];
 
string  connstr = ((NameValueCollection)
 Context.GetConfig(
" appSettings " ))[ " connstr " ];
 
string  sql = " SELECT imgdata, imgtype FROM ImageStore WHERE id =  "   +  imgid;
 SqlConnection connection 
=   new  SqlConnection(connstr);
 SqlCommand command 
=   new  SqlCommand(sql, connection);
 connection.Open();
 SqlDataReader dr 
=  command.ExecuteReader();
 
if (dr.Read())
 {
  Response.ContentType 
=  dr[ " imgtype " ].ToString();
  Response.BinaryWrite( (
byte []) dr[ " imgdata " ] );
 }
 connection.Close();
}
  中国ASP.NET开发网整理,转载请注明出处。
 
ASP.NET ASP.NET 概述 ASP.NET 是一个统一的 Web 开发模型,它包括您使用尽可能少的代码生成企业级 Web 应用程序所必需的各种服务。ASP.NET 作为 .NET Framework 的一部分提供。当您编写 ASP.NET 应用程序的代码时,可以访问 .NET Framework 中的类。您可以使用与公共语言运行库 (CLR) 兼容的任何语言来编写应用程序的代码,这些语言包括 Microsoft Visual Basic、C#、JScript .NET 和 J#。使用这些语言,可以开发利用公共语言运行库、类型安全、继承等方面的优点的 ASP.NET 应用程序。 ASP.NET 包括: 页和控件框架 ASP.NET 编译器 安全基础结构 状态管理功能 应用程序配置 运行状况监视和性能功能 调试支持 XML Web services 框架 可扩展的宿主环境和应用程序生命周期管理 可扩展的设计器环境 页和控件框架 ASP.NET 页和控件框架是一种编程框架,它在 Web 服务器上运行,可以动态地生成和呈现 ASP.NET 网页。可以从任何浏览器或客户端设备请求 ASP.NET 网页,ASP.NET 会向请求浏览器呈现标记(例如 HTML)。通常,您可以对多个浏览器使用相同的页,因为 ASP.NET 会为发出请求的浏览器呈现适当的标记。但是,您可以针对诸如 Microsoft Internet Explorer 6 的特定浏览器设计 ASP.NET 网页,并利用该浏览器的功能。ASP.NET 支持基于 Web 的设备(如移动电话、手持型计算机和个人数字助理 (PDA))的移动控件。 ASP.NET 网页是完全面向对象的。在 ASP.NET 网页中,可以使用属性、方法和事件来处理 HTML 元素。ASP.NET 页框架为响应在服务器上运行的代码中的客户端事件提供统一的模型,从而使您不必考虑基于 Web 的应用程序中固有的客户端和服务器隔离的实现细节。该框架还会在页处理生命周期中自动维护页及该页上控件的状态。有关更多信息,请参见 ASP.NET 网页概述。 使用 ASP.NET 页和控件框架还可以将常用的 UI 功能封装成易于使用且可重用的控件。控件只需编写一次,即可用于许多页并集成到 ASP.NET 网页中。这些控件在呈现期间放入 ASP.NET 网页中。 ASP.NET 页和控件框架还提供各种功能,以便可以通过主题和外观来控制网站的整体外观和感觉。可以先定义主题和外观,然后在页面级或控件级应用这些主题和外观。有关更多信息,请参见 ASP.NET 主题和外观概述。 除了主题外,还可以定义母版页,以使应用程序中的页具有一致的布局。一个母版页可以定义您希望应用程序中的所有页(或一组页)所具有的布局和标准行为。然后可以创建包含要显示的页特定内容的各个内容页。当用户请求内容页时,这些内容页与母版页合并,产生将母版页的布局与内容页中的内容组合在一起的输出。有关更多信息,请参见 ASP.NET 母版页概述。 ASP.NET 编译器 所有 ASP.NET 代码都经过了编译,可提供强类型、性能优化和早期绑定以及其他优点。代码一经编译,公共语言运行库会进一步将 ASP.NET 编译为本机代码,从而提供增强的性能。 ASP.NET 包括一个编译器,该编译器将包括页和控件在内的所有应用程序组件编译成一个程序集,之后 ASP.NET 宿主环境可以使用该程序集来处理用户请求。有关更多信息,请参见 ASP.NET 编译概述。 安全基础结构 除了 .NET 的安全功能外,ASP.NET 还提供了高级的安全基础结构,以便对用户进行身份验证和授权,并执行其他与安全相关的功能。您可以使用由 IIS 提供的 Windows 身份验证对用户进行身份验证,也可以通过您自己的用户数据库使用 ASP.NET Forms 身份验证和 ASP.NET 成员资格来管理身份验证。此外,可以使用 Windows 组或您自己的自定义角色数据库(使用 ASP.NET 角色)来管理 Web 应用程序的功能和信息方面的授权。您可以根据应用程序的需要方便地移除、添加或替换这些方案。有关更多信息,请参见下列主题: ASP.NET 网站安全性 使用成员资格管理用户 使用角色管理授权 Forms 身份验证提供程序 ASP.NET 始终使用特定的 Windows 标识运行,因此,您可以通过使用 Windows 功能(例如 NTFS 访问控制列表 (ACL)、数据库权限等等)来保护应用程序的安全。有关 ASP.NET 标识的更多信息,请参见配置 ASP.NET 进程标识和 ASP.NET 模拟。 状态管理功能 ASP.NET
微软ASP.NET入门教程.DOC文档(解压后13M,可直接打印,共300页)入门 介绍 什么是 ASP.NET? 语言支持ASP.NET Web 窗体 Web 窗体介绍 使用服务器控件 对控件应用样式 服务器控件窗体验证 Web 窗体用户控件 数据绑定服务器控件 服务器端数据访问 数据访问和自定义 使用业务对象 创作自定义控件 Web 窗体控件引用 Web 窗体语法引用ASP.NET Web 服务 Web 服务介绍 编写简单的 Web 服务 Web 服务类型封送 使用 Web 服务中的数据 使用对象和内部 WebService 行为 HTML 模式匹配ASP.NET Web 应用程序 应用程序概述 使用 Global.asax 文件 管理应用程序状态 Http 处理程序和工厂缓存服务 缓存概述 页输出缓存 页片断缓存 页数据缓存配置 配置概述 配置文件格式 检索配置部署 部署应用程序 使用进程模型 处理错误安全性 安全性概述 身份验证与授权 基于 Windows 的身份验证 基于窗体的身份验证 授权用户和角色 用户帐户模拟 安全性和 Web 服务本地化 国际化概述 Overview 设置区域性和编码 本地化 ASP.NET 应用程序 使用资源文件跟踪 跟踪概述 跟踪记录到页输出 应用程序级跟踪记录调试 SDK 调试器性能 性能概述 性能优化提示 测量性能ASPASP.NET 的移植 移植概述 语法和语义 语言兼容性 COM 互操作性 事务示例应用程序 个性化入口 电子商务店面 类浏览器应用程序 IBuySpy.com 比特整理( www.bitceo.com )
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值