ASP.NET面试题总结

时间:2021-07-31 16:56:57

1.ASP.NET中的身份验证有那些?你当前项目采用什么方式验证请解释ASP.NET身份验证模式包括Windows、Forms(窗体)、Passport(护照)和None(无)。

1、Windows身份验证—常结合应用程序自定义身份验证使用使用这种身份验证模式时,ASP.NET依赖于IIS对用户进行验证,并创建一个Windows访问令牌来表示已通过验证的标识。

IIS提供以下几种身份验证机制:

①  Passport身份验证。使用这种身份验证模式时,ASP.NET使用Microsoft Passport
的集中式身份验证服务,该服务为成员站点提供单一登录和核心配置文件服务。由于访问新
的受保护资源或站点时不再需要登录。ASP.NET为Microsoft Passport软件开发包(SDK)
所提供的功能提供了一个方便的包装(Wrapper)。此SDK必须安装在WEB服务器上。


② Form窗体身份验证—常用。这种验证方式使用客户端重定向功能,将未通过身份验证的
用户转发到特定的登录窗体,要求用户输入其凭据信息(通常是用户名和密码)。这些凭据
信息被验证后,系统生成一个身份验证票证(ticket)并将其返回客户端。身份验证票证可
在用户的会话期间维护用户的身份标识信息,以及用户所属的角色列表(可选)。


③ None。使用这种身份验证模式,表示你不希望对用户进行验证,或是采用自定义的身份验证协议。

2.什么是WEB控件?使用WEB控件有那些优势?

2、Web 服务器控件定义为抽象控件,是使用于web窗体页并运行于服务器的控件,包括传统的窗体控件,例如按钮、文本框和表等复杂控件,还包括提供在网格中显示数据、选择日期等常用窗体功能的控件。可在服务器上使用熟悉的面向对象技术对其进行编程的对象模型。每个服务器控件都公开一些属性,这些属性使您得以在服务器代码中通过编程操作该控件的 HTML 属性。
提供一组事件,您可以为其编写事件处理程序,方法与在基于客户端的窗体中大致相同,所不同的是事件处理是在服务器代码中完成的。
在客户端脚本中处理事件的能力。
自动维护控件状态。在窗体到服务器往返期间,用户在 HTML 服务器控件中输入的值将
在页发送回浏览器时自动维护。与验证控件进行交互,便于您验证用户是否在控件输入了
适当的信息。

数据绑定到一个或多个控件属性。
如果 Web 窗体页显示在支持层叠样式表的浏览器中,则支持 HTML 4.0 样式。直接可用的自定义属性。您可以将任何需要的属性添加到 HTML 服务器控件,页框架将读取并呈现它们而不更改其任何功能。这将允许您向控件添加浏览器特定的属性。
Web 服务器控件还提供以下功能:
①   功能丰富的对象模型,该模型具有类型安全编程功能。
②   自动浏览器检测。控件可以检测浏览器的功能,并为基本型和丰富型 (HTML 4.0) 
浏览器创建适当的输出。
③   对于某些控件,可以使用模板来自定义控件的外观。
④   对于某些控件,可以指定控件的事件是立即发送到服务器,还是先缓存然后在提交窗体时引发。

⑤   可将事件从嵌套控件(例如表中的按钮)传递到容器控件。

3.请解释ASP。NET中以什么方式进行数据验证?


3、可以在服务器端或者客户端进行验证。  


4.请谈谈对正则表达式的看法?

4、正则表达式:Regular Express(也称为“regex”或“regexp”),是一种用来描述文本模式的特殊语法。在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具

5.ASP.NET*有几种类型的控件?各有什么区别?

5、Html控件=传统的html标记+runat=”server”,可在服务器端访问,功能没有Web控件强大Web控件

服务器端控件,可以回传数据,事件驱动

用户控件自定义、可重用的控件,和WebForm很相似,以WebForm为容器运行自定义控件――自定义、可重用的组件,从WebControl继承,在服务器端执行。

1.请解释ASP。NET中的Web页面与其隐藏类之间的关系?


1、ASP.NET中的页面由两部分组成,页面显示(aspx文件)和代码逻辑(aspx.cs文件)通过Page指令联系在一起,如下:所以关系为:Web页面会继承隐藏类。


2.什么是ViewState,能否禁用?是否所用控件都可以禁用?

2、Web页面是没有状态的,ViewState(视图状态)可用来保存Web页面在客户端和服务器端往返过程的状态
说简单点ViewState只不过是Hidden控件,加上微软写上的一些代码而已
可以禁用,由三种方法:
1)禁用单个控件:控件.EnableViewState = false。
2)禁用单个页面:在@Page指令中设置这个属性以达到页面级禁用ViewState的目的。
3)禁用整个程序:修改Web.config中相应元素的属性即可。
最后,禁用服务器全局的ViewState,修改.Net Framework安装目录下的machine.config即可。

3.当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决

3、可能情况:

1)可能事件没有关联

2)根本就没有写读取代码

3)写错了事件

4)在Load事件中有清空代码,但没有写 if (!IsPostBack)

4.请解释一个WEB页面中代码执行次序。


4、常用事件执行次序:Init(初始化) -> Load(加载) -> Event(控件事件) -> PreRender(呈现之前) -> UnLoad(卸载)

5.请解释什么是上下文对象,在什么情况下要使用上下文对象

5、HttpContext,封装有关个别 HTTP 请求的所有 HTTP 特定的信息无论在Page或者cs中,只要获得有关HTTP有关信息,都可以进行调用

1.请解释转发与跳转的区别?
1.转发:HttpServerUtility.Transfer();

对于当前请求,终止当前页的执行,并使用指向一个新页的指定 URL 路径来开始执行此新页。可以清除 QueryString 和 Form 集合

跳转:HttpResponse.Redirect();

将客户端重定向到新的 URL 并指定该新 URL,默认不终止当前页的执行.

2.请解释ASP.NET中不同页面之间数据传递有那些方式?
2.ASP.NET默认提交地址的是本页,要提交到其他页有以下几种方式:

1) 会话Session

写:Session[“name”] = value; 读:Session[“name”]

2) 应用程序对象Application

写:Application[“name”] = value; 读:Application[“name”]

3) 转发:

第一个页面: Server.Transfer(“WebForm1.aspx”, true);

第二个页面: Request.Form[“TextBox1”]

4) 跨页提交:

第一个页面:指明提交按钮要回发的URL

第二个页面:

((TextBox)PreviousPage.FindControl(“txtContent”)).Text

5) QueryString

第一个页面:URL?名称=值

第二个页面:Request.QueryString[“名称”]

6) Cookie

第一个页面:HttpCookie cookie = new HttpCookie(名称,值); Response.Cookies.Add(cookie);

第二个页面:Request.Cookies["名称"].Value

3.请解释ASP.NET中button、linkbutton、imagebutton  及hyperlink这四个控件之间的功别。
3.Button、LinkButton、ImageButton三个控件比较相似,都可以进行提交并支持了事件驱动,只是样式不同。

Button为按钮样式,LinkButton为超链接样式,ImageButton为图片样式

HyperLink为运行在服务器端的超级链接,不支持事件驱动

4.WEB控件可以激法服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。

4.通过实现IPostBack这个接口来执行事件。自动回传就是AutoPostBack,使用自动回传可以监视客户端变化情况并将这种改变返回到服务器端

5.WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?

5.能,追根溯源,服务器端控件在html中表现形式还是html标记,所以可以执行客户端事件。

例如:控件.Attributes["客户端事件"]=”客户端脚本”;