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






3.27/5 (36投票s)
2005年9月6日
6分钟阅读

106599
本题库旨在为各类 .NET 发烧友提供电子资源:无论是需要了解细节以便面试的初学者,还是希望巩固框架知识的专家。
引言
本题库旨在为各类 .NET 发烧友提供电子资源:无论是需要了解细节以便面试的初学者,还是希望巩固框架知识的专家。本题库已分成 4 部分,每部分包含 25 个问题,重点关注以下主题:
- ASP.NET 框架 1.0/1.1/2.0
- 安全
- SQL Server 2000/2005
- COM/COM+
- Web 服务
- 架构/设计
常见问题解答
- 什么是接口?什么是抽象类? 
在接口中,所有方法都必须是抽象的(不能有定义)。在抽象类中,有些方法可以有定义。接口不允许使用访问修饰符,而抽象类可以。 
- Session 状态与 View 状态的区别 
在某些情况下,使用 View 状态不可行。View 状态的替代方案是 Session 状态。Session 状态在以下情况中使用: - 大量数据 - View 状态会增加发送到浏览器和回发的 HTML 页面的大小。因此,使用 Session 状态。
- 安全数据 - 尽管 View 状态数据经过编码,并且可能经过加密,但如果敏感数据不发送给客户端,则更安全。因此,Session 状态是更安全的选择。
- 对象序列化到 View 状态的问题 - View 状态对于少量数据很有效。像 DataSet这样的其他类型速度较慢,并且会生成非常大的 View 状态。
 
- 可以在单个 ASPX 文件中混合使用两种不同的编程语言吗? 
ASP.NET 的内置解析器用于从 ASPX 文件中提取代码并创建临时文件。每个解析器只理解一种语言。因此,无法在单个 ASPX 文件中混合使用语言。 
- 是否可以看到 ASP.NET 从 ASPX 文件生成的代码? 
通过在 ASPX 文件中启用调试,使用 <%@ Page Debug="true" %>指令,或在 Web.config 中使用<compilation debug="true">语句,可以查看生成的代码。代码存储在 CS 或 VB 文件中(通常在 \%SystemRoot%\Microsoft.NET\Framework\v1.0.nnnn\Temporary ASP.NET Files 目录下)。
- 可以在 Web 窗体中使用自定义的 .NET 数据类型吗? 
可以通过将包含自定义数据类型的 DLL 放在应用程序根目录的 bin 文件夹中来实现。当引用该类型时,ASP.NET 会自动加载 DLL。 
- 列出可以在 Global.asax 中包含的事件处理程序。 
- 应用程序启动和结束事件处理程序
- 会话启动和结束事件处理程序
- 每个请求的事件处理程序
- 非确定性事件处理程序
 
- View 状态是否可以防止篡改? 
可以通过在每个需要保护的 ASPX 文件中包含带有 EnableViewStateMac="true"属性的@ Page指令来实现。另一种方法是在 Web.config 文件中包含<pages enableViewStateMac="true" />语句。
- View 状态是否可以加密? 
可以通过将 EnableViewStateMac设置为true,并修改 Machine.config 的<machineKey>元素为<machineKey validation="3DES” />,或者将上述语句添加到 Web.config 来加密 View 状态。
- 在页面处理周期的哪个阶段 ViewState 可用? 
在 Page 加载期间, Init()方法调用之后,Render()方法调用之前,ViewState 可用。
- Web 控件是否支持级联样式表? 
所有 Web 控件都继承自基类 System.Web.UI.WebControls.WebControl的CssClass属性,该属性可用于控制 Web 控件的属性。
- 在 ASPX 文件中默认导入了哪些命名空间? 
默认导入以下命名空间。其他命名空间必须使用 @ Import指令手动导入。- 系统
- System.Collections
- System.Collections.Specialized
- System.Configuration
- System.Text
- System.Text.RegularExpressions
- System.Web
- System.Web.Caching
- System.Web.Security
- System.Web.SessionState
- System.Web.UI
- System.Web.UI.HtmlControls
- System.Web.UI.WebControls
 
- 从 ASP.NET 应用程序发送电子邮件需要哪些类? 
要从 ASP.NET 应用程序发送电子邮件,需要使用 MailMessage和SmtpMail类。MailMessage和SmtpMail是 .NET Framework 类库的System.Web.Mail命名空间中定义的类。
- 为什么有些 Web 服务类派生自 System.Web.WebServices,而有些则不派生? 
那些使用 Application、Session、Context、Server和User等对象的 Web 服务类必须派生自System.Web.WebServices。如果不使用这些对象,则无需派生。
- 什么是 VSDISCO 文件? 
VSDISCO 文件是启用 Web 服务动态发现的 DISCO 文件。ASP.NET 将 VSDISCO 链接到一个 HTTP 处理程序,该处理程序会扫描主机目录及其子目录中的 ASMX 和 DISCO 文件,并返回一个动态生成的 DISCO 文档。请求 VSDISCO 文件的客户端会收到一个看起来像静态 DISCO 文档的内容。 
- 如何在 ASP.NET 中将文件上传到 Web 页面? 
可以通过使用 HtmlInputFile类声明一个<input type="file" runat="server"/>标签实例。然后,可以声明一个byte[]来读取输入文件中的数据。之后可以将这些数据发送到服务器。
- 如何创建一个 ASPX 页面,使其能够定期刷新? 
可以使用下面的 META标签作为触发器,每 n 秒自动刷新页面。<meta http-equiv="Refresh" content="nn"> 
- 如何使用密码初始化 TextMode 为“password”的 TextBox? 
不能使用 TextBox的Text属性为密码字段赋值。相反,可以使用其Value字段来实现此目的。<asp:TextBox Value="imbatman" TextMode="Password" ID="Password" RunAt="server" /> 
- 为什么在使用 HtmlInputFile 控件将文件上传到 Web 服务器时,控件的 PostedFile 属性总是显示 null? 
这是因为 multipart/form-data"属性在<form>标签中丢失了。
- 当 Web 窗体加载时,如何将焦点设置到特定控件? 
可以通过使用客户端脚本来实现。 document.forms[0].TextBox1.focus ()上面的代码将在页面加载时将焦点设置到名为 TextBox1的TextBox控件。
- System.Web.UI.Page 的 IsPostBack 属性是如何工作的? 
IsPostBack检查 HTTP 请求是否附带包含__VIEWSTATE或__EVENTTARGET参数的回发数据。如果没有这些参数,则不是回发。
- 什么是 WSDL? 
WSDL 是一种 XML 格式,用于将网络服务描述为一组端点,这些端点操作包含文档导向或过程导向信息的消息。操作和消息是抽象描述的,然后绑定到具体的网络协议和消息格式来定义一个端点。相关的具体端点组合成抽象端点(服务)。(来源:www.w3.org) 
- 什么是 UDDI? 
UDDI 代表 Universal Description, Discovery, and Integration(通用描述、发现和集成)。它就像 Web 服务的“黄页”。它由 Microsoft、IBM 和 Ariba 维护,旨在提供有关所有供应商已注册 Web 服务的详细信息。可以查询 UDDI 来查找特定的 Web 服务。 
- 是否可以从 WSDL 生成 ASP.NET Web 服务的源代码? 
可以使用 Wsdl.exe 工具(.NET Framework SDK)根据 WSDL 链接生成 ASP.NET Web 服务的源代码。 示例:wsdl /server http://api.google.com/GoogleSearch.wsdl。 
- 为什么在使用 ASP.NET 文件上传控件上传大文件时会失败? 
出于安全原因,ASP.NET 限制了文件上传的大小。默认大小为 4 MB。可以通过修改 Machine.config 中 <httpRuntime>元素的maxRequestLength属性来更改此设置。
- 描述内联代码和代码隐藏的区别。 
内联代码与页面中的 HTML 一起编写。代码隐藏是写在单独文件中的代码,并由 .aspx 页面引用。 
