100 个 ASP.NET 常见问题解答:第一部分






2.89/5 (41投票s)
2005年8月17日
8分钟阅读

73624
本题库旨在为各类 .NET 爱好者提供电子资源:无论是为即将到来的面试需要了解细枝末节的新手,还是希望巩固框架知识的专家。
引言
本题库旨在为各类 .NET 爱好者提供电子资源:无论是为即将到来的面试需要了解细枝末节的新手,还是希望巩固框架知识的专家。本题库已分为四个部分,每部分包含 25 个问题,重点关注以下主题。
- ASP.NET 框架 1.0/1.1/2.0
- 安全
- SQL Server 2000/2005
- COM/COM+
- Web 服务
- 架构/设计
ASP.NET 框架 1.0/1.1/2.0
- 创建和运行 ASP.NET 应用程序需要什么?
- Windows 2000、Windows Server 2003 或 Windows XP。
- ASP.NET,可以是可再发行组件(包含在 .NET SDK 中)或 Visual Studio .NET。
- 在哪里可以下载 .NET SDK?
.NET SDK 可在此处获得:此处。
(在安装 .NET SDK 之前,您必须安装 Microsoft .NET Framework 1.1 版本可再发行组件包。)
- 是否有适用于 .NET SDK 的免费 IDE?
- Microsoft 免费提供 Visual Studio 2005 Express Edition Beta。ASP.NET 开发人员尤其会关注 Visual Web Developer 2005 Express Edition Beta 2,它可免费下载。
- ASP.NET Web Matrix Project(由 Microsoft 支持)是一款用于开发 ASP.NET 应用程序的免费 IDE,可在此处获取:此处。
- 还有一个名为 Mono 的免费开源 UNIX 版本 Microsoft .NET 开发平台,可在此处下载:此处。
- 另一个日益流行的 .NET 开源开发环境是 #develop(SharpDevelop 的缩写),可在此处下载:此处。
- ASP.NET 是何时发布的?
ASP.NET 是 .NET 框架的一部分,该框架于 2002 年作为软件平台发布。
- 是否有新版本即将发布?
ASP.NET 2.0、Visual Studio 2005 (Whidbey)、Visual Web Developer 2005 Express Edition 是 Microsoft Web 平台和工具的下一批版本。它们已经发布了 Beta 版本。预计将于 2005 年 11 月 7 日那一周发布。
- 解释命名空间。
命名空间是程序中使用的一组名称的逻辑分组。单个应用程序代码中可以有多个命名空间,这些命名空间根据标识符的使用进行分组。任何给定标识符的名称在其命名空间中只能出现一次。
- 列出 ASP.NET 支持的身份验证类型。
- Windows(默认)
- 表单
- Passport
- 无(安全已禁用)
- 什么是 CLR?
公共语言运行时 (CLR) 是一个运行时环境,它管理 .NET 代码的执行并提供内存管理、调试、安全等服务。CLR 也称为虚拟机执行系统 (VES)。
- 什么是 CLI?
CLI 是一组运行时环境的规范,包括公共类型系统、基类库以及一种称为公共中间语言 (CIL) 的与机器无关的中间代码。(来源:Wikipedia。)
- 列出页面加载生命周期的各个阶段。
Init()
Load()
PreRender()
Unload()
- 解释程序集和清单。
程序集是零个或多个文件的集合,其中一个文件(DLL 或 EXE)包含称为程序集清单的特殊元数据。清单以二进制数据形式存储,包含有关程序集的版本要求、作者、安全权限以及构成程序集的文件的列表等详细信息。每当构建一个 DLL 时,就会创建一个程序集。可以通过使用
System.Reflection
命名空间中的类以编程方式查看清单。可以使用中间语言反汇编器 (ILDASM) 工具来完成此目的。可以从命令提示符或通过“开始”>“运行”启动它。 - 什么是影子复制?
为了在实时 Web 服务器上替换 COM 组件,必须停止整个网站,复制新文件,然后重新启动网站。这对于需要始终运行的 Web 服务器来说是不可行的。.NET 组件则不同。它们可以通过一种称为影子复制的机制随时覆盖。它防止 DLL 和 EXE 等可执行文件被锁定。每当发布新版本的 PE 文件时,CLR 都会自动检测它们,并自动加载更改的组件。它们将用于处理所有当前未执行的新请求,而旧版本仍将继续处理当前执行的请求。通过淘汰旧版本,更新即可完成。
- 什么是 DLL Hell?
DLL Hell 是指安装一个新应用程序可能会破坏或阻碍其他应用程序的问题,因为新的 DLL 文件会被复制到系统中,而旧的应用程序不支持或与它们不兼容。.NET 通过支持在任何给定时间存在多个程序集版本来克服此问题。这也称为并行组件版本控制。
- 解释 Web 服务。
Web 服务是可编程的业务逻辑组件,可通过 Internet 访问其功能。HTTP 等标准协议可用于访问它们。Web 服务基于简单对象访问协议 (SOAP),它是 XML 的一种应用。Web 服务具有 .asmx 扩展名。
- 解释 Windows 窗体。
Windows 窗体用于开发 Windows GUI 应用程序。它是一个类库,使开发人员能够访问具有丰富功能的 Windows 公共控件。它是 .NET Framework 支持的所有语言的通用 GUI 库。
- 什么是回发?
当发生某个操作(例如单击按钮)时,包含
<FORM... >
标记内所有控件的页面会执行 HTTP POST,并将自身作为目标 URL。这称为回发。 - 解释服务器端代码和客户端代码之间的区别?
服务器端脚本意味着所有脚本都将在服务器上执行并按需进行解释。客户端脚本意味着脚本将在浏览器中立即执行,例如字段验证、时钟、电子邮件验证等。客户端脚本通常使用 VBScript 或 JavaScript 完成。由于代码包含在 HTML 页面中,任何人都可以通过查看页面源代码来查看代码。它还可能对客户端计算机构成安全隐患。
- 列举指令的类型。
@ Page
指令@ Import
指令@ Implements
指令@ Register
指令@ Assembly
指令@ OutputCache
指令@ Reference
指令
- 什么是代码隐藏?
代码隐藏是一种概念,其中页面的内容在一个文件中,而服务器端代码在另一个文件中。这使得不同的人可以同时处理同一页面,并且可以轻松地重新设计页面的任一部分,而无需更改另一部分。在
@ Page
指令中添加Inherits
属性,以将代码隐藏文件的位置指定给 ASP.NET 页面。 - 描述内联代码和代码隐藏之间的区别。
内联代码与页面中的 HTML 一起编写。设计代码和逻辑代码之间没有单独的区别。代码隐藏是在单独的文件中编写的代码,由 .aspx 页面引用。
- 列出 ASP.NET 验证控件?
RequiredFieldValidator(必填字段验证器)
RangeValidator(范围验证器)
CompareValidator
RegularExpressionValidator
CustomValidator(自定义验证器)
ValidationSummary
- 什么是数据绑定?
数据绑定是一种用于将数据集合(例如
DataSet
)中的值连接到 Web 窗体上的控件的方式。数据集中的值会自动显示在控件中,而无需编写单独的代码来显示它们。 - 描述 ASP.NET 中的分页。
ASP.NET 中的
DataGrid
控件支持轻松的数据分页。可以将DataGrid
的AllowPaging
属性设置为True
来执行分页。ASP.NET 会自动执行分页,并根据为PagerStyle.Mode
设置的属性以不同样式提供指向其他页面的超链接。 - 用户输入数据的验证应该发生在服务器端还是客户端?为什么?
所有用户输入数据的验证都应在服务器端进行,并在客户端进行最少的验证,尽管这可以减少服务器负载和网络流量,因为我们可以确保表单仅提交正确类型的数据。这完全不安全。用户可以看到用于验证的代码,并创建一个绕过它的方法。其次,处理数据的页面的 URL 在原始表单页面中是可见的。这将允许不诚实的用户将他们自己的表单数据发送到您的应用程序。客户端验证有时可以在认为合适且可行的情况下执行,以提供更丰富、更响应式的用户体验。
- Server.Transfer 和 Response.Redirect 之间有什么区别?
Response.Redirect
:这会告知浏览器请求的页面可以在新位置找到。然后,浏览器会启动另一个请求到新页面,在浏览器中加载其内容。这会导致浏览器发出两个请求。Server.Transfer
:它会在服务器上将执行从第一个页面转移到第二个页面。就浏览器客户端而言,它只发出一个请求,并且初始页面是响应内容的页面。这种方法的优点是减少了客户端浏览器与服务器之间的往返次数。此外,任何已发布的表单变量和查询字符串参数都可用于第二个页面。